공부하기/백준

[Python] 백준 풀기 16435 - 스네이크버드

XEV 2023. 2. 24. 22:30

파이썬 백준 16435번

실버 5

https://www.acmicpc.net/problem/16435

 

16435번: 스네이크버드

첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 그리디 알고리즘, 정렬

 

 

 

 

 

문제 풀기

과일을 높이 순으로 오름차순 정렬하여 제일 낮은 과일과 스네이크버드의 길이를 비교한다. 이때, 과일의 높이가 스네이크버드의 길이 보다 작거나 같은면 +1 을 해주고 다음 과일의 높이와 비교한다.

이 반복 작업을 하다가 과일의 높이가 지속적으로 길어진 스네이크버드 보다 높을경우 for loop 을 빠져나오고 그때의 스네이크버드의 길이를 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnMaxLengthSnake(L):
    fruit_ls.sort()
    
    for f in fruit_ls:
        if L >= f:
            L += 1
        else:
            break
    print(L)


if __name__ == "__main__":
    N, L = map(int, inputdata().split())
    fruit_ls = list(map(int, inputdata().split()))
    
    fnMaxLengthSnake(L)