문제 링크
문제 풀이 시간 : 6분 51초
메모리: 31256 KB, 시간: 44 ms
그리디 알고리즘, 구현, 시뮬레이션
랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.
일직선으로 놓여진 개의 화분에 캣닢이 하나씩 심어져 있다.
각 화분은 초기에 만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.
랑이 집사가 연속된 개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 만큼씩 증가한다. 모든 화분의 수분이 1씩 감소한다. 수분이 0이 된 화분에 있는 캣닢은 죽는다.
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.
첫째 줄에 자연수
,, , 가 공백을 사이에 두고 주어진다. (
,
,
,
는 의 약수)
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력한다.
의 수만큼 값을 가진 리스트 plant를 만들고, 오름차순으로 정렬한 뒤, 연속한 만큼 인덱싱 한 뒤, 해당 인덱스의 값에 를 더해준다.
N, K, A, B = map(int, input().split())
plant = sorted([K for _ in range(N)])
cnt = 0
while 0 not in plant:
plant = sorted(list(map(lambda x:x-1, plant))) # 1 감소
plant[:A] = list(map(lambda x:x+B, plant[:A]))
cnt += 1
print(cnt)
랜덤한 문제를 골라서 시간을 재고 풀이하였다. 문제가 어렵지 않았지만 처음으로 시간 내애 빠르게 풀이한 문제라 기분이 좋았다.