본문 바로가기
Develop/백준 (python)

[백준] 23351번: 물 주기 (python)

by Tarra 2022. 1. 17.

23351번: 물 주기


문제 )

랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.
일직선으로 놓여진 N개의 화분에 캣닢이 하나씩 심어져 있다.
각 화분은 초기에 K만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.
    1. 랑이 집사가 연속된 A개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 B만큼씩 증가한다.
    2. 모든 화분의 수분이 1씩 감소한다.
    3. 수분이 0이 된 화분에 있는 캣닢은 죽는다.
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.

 

입력 :

첫째 줄에 자연수 KAB가 공백을 사이에 두고 주어진다.

출력 :

모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력한다.

 

 

풀이)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
nums = input().split(" ")
nums = list(map(int, nums)) #입력값 리스트화
# N : nums[0], K : nums[1], A : nums[2], B : nums[3]
 
cat_leaf = []
for i in range(nums[0]):
    cat_leaf.append(nums[1]) #화분 셋팅
 
cnt = 0
while 0 not in cat_leaf: #cat_leaf안에 0이 발견되면 반복 멈춤.
    m = cat_leaf.index(min(cat_leaf)) #리스트의 값 중 제일 작은 값 찾기
    for i in range(nums[2]): # 연속된 화분에 물주기 
        cat_leaf[m+i] += nums[3#제일 먼저 발견된 마른 화분 기준으로 B만큼 물줌.
    for i in range(len(cat_leaf)): #하루가 지나 모두 1씩 마름
        cat_leaf[i] -= 1
    cnt += 1 #하루가 지남. + 한바퀴 돌았으므로 리스트에서 0의 존재 확인.
 
print(cnt) # 반복이 끝나면 cnt 출력
 
cs

 

처음 풀어보는 실버3 문제...


출처 : https://www.acmicpc.net/problem/23351

 

23351번: 물 주기

첫째 줄에 자연수 $N$, $K$, $A$, $B$가 공백을 사이에 두고 주어진다. ($2 \le N \le 100$, $1 \le K \le 100$, $1 \le A \times B < N$, $A$는 $N$의 약수)

www.acmicpc.net