알고리즘 정복하기!/백준 문제풀이

백준 16435번 Python / Greedy

by seokii 2022. 2. 25.
728x90
반응형

백준 문제풀이 Github

https://github.com/Seokii/baekjoon

 

GitHub - Seokii/baekjoon: Daily Commit for Baekjoon

Daily Commit for Baekjoon. Contribute to Seokii/baekjoon development by creating an account on GitHub.

github.com

 

문제 링크

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

 

풀이

n, l = map(int, input().split())
h = list(map(int, input().split()))
min_value = min(h)

while min_value <= l:
    h.sort()
    if l >= h[0]:
        l += 1
        del h[0]
    if len(h) >= 1:
        min_value = min(h)
    else:
        break

print(l)

과일들의 높이를 받아와서 처음 min_value를 높이 중 가장 낮은 값을 받아왔습니다.

while문을 사용해서 문제를 풀었습니다.

스네이크버드의 길이(l)가 과일 높이 최솟값보다 크다면 반복을 계속해서 진행하는 구조입니다.

처음에 오름차순으로 과일의 높이를 정렬하고,

l의 길이를 1을 추가 함과 동시에 리스트에서 삭제를 해줍니다.

그리고 리스트에 원소가 존재한다면 최솟값을 재지정해줍니다.

리스트에 원소가 남아 있지 않다면, 반복을 종료합니다.

 

 

728x90
반응형

댓글