23351번: 물 주기
문제 )
랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.
일직선으로 놓여진 N개의 화분에 캣닢이 하나씩 심어져 있다.
각 화분은 초기에 K만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.
1. 랑이 집사가 연속된 A개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 B만큼씩 증가한다.
2. 모든 화분의 수분이 1씩 감소한다.
3. 수분이 0이 된 화분에 있는 캣닢은 죽는다.
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.
입력 :
첫째 줄에 자연수 , K, A, B가 공백을 사이에 두고 주어진다.
![](https://blog.kakaocdn.net/dn/d1EcWx/btrqR0tgPPt/3Oqc1NtjZ2dkxMS0UkxBVk/img.png)
출력 :
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력한다.
풀이)
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://t1.daumcdn.net/keditor/emoticon/face/large/003.png)
출처 : 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
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 1773번: 폭죽쇼 (python) (0) | 2022.01.18 |
---|---|
[백준] 1225번: 이상한 곱셈 (python) (0) | 2022.01.17 |
[백준] 1181번: 단어 정렬 (python) (0) | 2022.01.16 |
[백준] 11050번: 이항 계수 1 (python) (0) | 2022.01.16 |
[백준] 15829번: Hashing (python) (0) | 2022.01.16 |