728x90
[백준] 16435번 - 스네이크버드
풀이 시간: 10분 이내
1) 문제 해결 아이디어
문제에 나온대로 구현만 하면 되는 쉽게 풀 수 있는 문제다.
높이가 작은 것부터 검사해야 많은 과일을 먹어 길이가 최대가 될 수 있으므로 과일 높이(h)를 오름차순 정렬한다.
for문에서 과일 높이가 스네이크 버드 길이보다 커지면 더이상 과일을 먹을 수 없기 때문에 break로 탈출한다. 이미 앞에서 오름차순 정렬이 된 상태이기 때문에 뒤에 값은 더 검사해볼 필요도 없다.
2) 소스코드
n, l = map(int, input().split()) # 과일 개수, 초기 길이
h = list(map(int, input().split())) # 과일 높이(n개)
h.sort() # 과일높이 오름차순 정렬
length = l # 스네이크버드 길이(초기 길이로 초기화)
for i in range(n):
# 과일 높이가 스네이크 버드 길이보다 작거나 같으면
if(h[i] <= length):
# 과일 먹기
length += 1 # 스네이크 버드 길이 1 증가
n -= 1 # 과일 개수 1 감소
else:
break
print(length)
728x90
'[Python]알고리즘 > 백준' 카테고리의 다른 글
[그리디 알고리즘] ▲ 12845번 - 모두의 마블 (0) | 2022.03.28 |
---|---|
[그리디 알고리즘] 11256번 - 사탕 (0) | 2022.03.28 |
[그리디 알고리즘] ▲ 1744번 - 수 묶기 (0) | 2022.03.28 |
[그리디 알고리즘] ★ 1700번 - 멀티탭 스케줄링 (0) | 2022.03.25 |
[그리디 알고리즘] ▲ 1969번 - DNA (0) | 2022.03.25 |