BOJ 23351 - 물 주기 (Python)

조민수·2024년 4월 16일
0

BOJ

목록 보기
42/64
post-custom-banner

S3, 구현, 그리디


문제

랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.

일직선으로 놓여진 NN개의 화분에 캣닢이 하나씩 심어져 있다.

각 화분은 초기에 KK만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.

  1. 랑이 집사가 연속된 AA개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 BB만큼씩 증가한다.
  2. 모든 화분의 수분이 1씩 감소한다.
  3. 수분이 0이 된 화분에 있는 캣닢은 죽는다.

모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.


풀이

  • 단순 구현 문제
  • 물을 몇 번째 화분부터 줄 지를 고민하면 된다.
    • 현재 가장 물을 적게 담고 있는 부분을 찾아 해당 부분부터 시작
from sys import stdin

n, k, a, b = map(int, stdin.readline().split())
day = 0

arr = [k] * n
loca = 0

while 0 not in arr:
    loca = arr.index(min(arr))
    for i in range(a):
        arr[loca + i] += b

    for i in range(n):
        arr[i] -= 1

    day += 1

print(day)
profile
사람을 좋아하는 Front-End 개발자
post-custom-banner

0개의 댓글