fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 23351 (C++) 물 주기
최초 업로드: 2025-11-09 16:08:08
최근 수정 시간: 2025-11-09 16:08:45
게시자: rlatjwls3333
카테고리: 백준
조회수: 7
# [Silver III] 물 주기 [문제 링크](https://www.acmicpc.net/problem/23351) ## 문제 설명 <p>랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.</p> <p>일직선으로 놓여진 $N$개의 화분에 캣닢이 하나씩 심어져 있다.</p> <p>각 화분은 초기에 $K$만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.</p> <ol> <li>랑이 집사가 연속된 $A$개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 $B$만큼씩 증가한다.</li> <li>모든 화분의 수분이 1씩 감소한다.</li> <li>수분이 0이 된 화분에 있는 캣닢은 죽는다.</li> </ol> <p>모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.</p> ## 입력 <p>첫째 줄에 자연수 $N$, $K$, $A$, $B$가 공백을 사이에 두고 주어진다. ($2 \le N \le 100$, $1 \le K \le 100$, $1 \le A \times B < N$, $A$는 $N$의 약수)</p> ## 출력 <p>모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력한다.</p> ## 풀이 n이 a의 배수여서 모든 공간에 n/a만큼 물이 감소하고 b씩 한번에 물을 주는 형태로 시뮬레이션을 돌렸습니다. ``` c++ #include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k, a, b; cin >> n >> k >> a >> b; int res=k; while(k>=n/a) { res += b; k = k-n/a+b; } cout << res; } ```