Coding Cantabile

[BOJ] #16435_스네이크버드(Python3, 파이썬) 본문

Coding Test/BOJ

[BOJ] #16435_스네이크버드(Python3, 파이썬)

Gracekim 2022. 12. 24. 14:21

본 게시글은 백준 저지 알고리즘 문제를 '파이썬, Python3' 언어로 풀이한 내용을 주관적으로 정리하였으며, 내용과 관련된 코드리뷰 및 피드백 환영합니다.

티어

Silver V

문제

스네이크버드는 뱀과 새의 모습을 닮은 귀여운 생물체입니다. 

스네이크버드의 주요 먹이는 과일이며 과일 하나를 먹으면 길이가 1만큼 늘어납니다.

과일들은 지상으로부터 일정 높이를 두고 떨어져 있으며 i (1 ≤ i ≤ N) 번째 과일의 높이는 hi입니다. 

스네이크버드는 자신의 길이보다 작거나 같은 높이에 있는 과일들을 먹을 수 있습니다.

스네이크버드의 처음 길이가 L일때 과일들을 먹어 늘릴 수 있는 최대 길이를 구하세요.

입력

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

두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다.

출력

첫 번째 줄에 스네이크버드의 최대 길이를 출력합니다.

예제 입력 및 출력 1

3 10
10 11 13
12

예제 입력 및 출력 2

9 1
9 5 8 1 3 2 7 6 4
10

풀이

import sys
input = sys.stdin.readline

N, length = map(int,input().split()) # 과일의 개수, 스네이크버드의 초기 길이
height = list(map(int, input().split())) # 과일 높이

height.sort()
for h in height: 
    if length >= h:
        length += 1
    else:
        continue

print(length)

처음에 순서대로 과일을 먹고, 한 과일을 테스트하면 다시 돌아보지 않는 것으로 문제를 해석해서 틀렸다. 하나씩 먹을때마다 값이 올라가기 때문에, 반드시 과일을 순서대로 정렬하여 테스트해야 한다.