[BOJ] 백준_23351번_물 주기_C/C++백준 알고리즘2021. 11. 12. 03:01
목차
문제 출처
https://www.acmicpc.net/problem/23351
문제
랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.
일직선으로 놓여진 N개의 화분에 캣닢이 하나씩 심어져 있다.
각 화분은 초기에 K만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.
랑이 집사가 연속된 A개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 B만큼씩 증가한다.모든 화분의 수분이 1씩 감소한다.수분이 0이 된 화분에 있는 캣닢은 죽는다.
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.
입력
첫째 줄에 자연수 N, K, A, B가 공백을 사이에 두고 주어진다. (2 ≤ N ≤ 100, 1 ≤ K ≤ 100, 1 ≤ K ≤ 100, 1 ≤ A, B ≤ N ,A는 N의 약수)
출력
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력한다.
시간초과 코드
//[BOJ] 23351번 물 주기_시간초과
#include <iostream>
using namespace std;
int main()
{
int n, k, a, _a = 0, b;
int flag = 1, day = 0;
cin >> n >> k >> a >> b;
int* arr = new int[n];
for (int i = 0; i < n; i++)
arr[i] = k;
while (flag)
{
for (int i = _a; i < _a + a; i++)
arr[i] += a;
_a += a;
if (_a >= n)
_a -= n;
for (int i = 0; i < n; i++) {
arr[i]--; //모든 화분의 수분이 1씩 감소한다.
if (arr[i] == 0) //수분이 0이 된 화분에 있는 캣닢은 죽는다.
flag = 0;
}
day++;
}
cout << day << endl;
return 0;
}
풀이 과정
아직 여기서 어떻게 더 짜야 시간 초과 판정을 해결할 수 있는지 모르겠지만 지금까지 테스트 해 본 경우들은 모두 문제 없이 실행된다. flag라는 변수로 어떤 캣닢이라도 죽을 경우 종료되는 반복문을 만들었다. 그리고 day 변수를 만들어 날짜를 저장한다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_23561번_Young한 에너지는 부족하다_C/C++ (0) | 2021.11.18 |
---|---|
[BOJ] 백준_10951번_A + B - 4_C/C++ (0) | 2021.11.17 |
[BOJ] 백준_1110번_더하기 사이클_C/C++ (0) | 2021.11.10 |
[BOJ] 백준_23303번_이 문제는 D2입니다._C/C++ (0) | 2021.11.09 |
[BOJ] 백준_23348번_스트릿 코딩 파이터_C/C++ (0) | 2021.11.08 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!