문제설명
소스코드
#include <iostream>
using namespace std;
int main()
{
int A; int B; int V;
cin >> A >> B >> V;
int count = (V - A) / (A - B);
if ((V - A) % (A - B) == 0) count += 1;
else count += 2;
cout << count;
}
풀이
- 반복문으로 풀면 무조건 시간초과가 발생한다.
- 정상에 일단 오르면 미끄러지지않으므로 최종적으로 가야하는 목표는 V가 아닌 V-A까지만 가면 다음날 A만큼 올라서 정상에 갈 수 있다.
- V-A를 가는데 걸리는 기간은 (V-A) / (A-B)이다. 즉 count = (V-A) / (A-B)
- (V-A) % (A-B) == 0일 경우 : count에 +1만큼 더해준다.(+1을 하는 이유는 V-A까지만 갔기 때문이다.)
- (V-A) % (A-B) != 0일 경우 : count에 +2만큼 더해준다.((V-A) % (A-B)가 0이 아니므로 정상에 도달하기에 하루가 더 필요함)
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 8단계 - 10757번 문제 (큰 수 A+B) (0) | 2023.05.09 |
---|---|
[C++] 백준 10단계 - 27323번 문제 (직사각형) (0) | 2023.05.09 |
[C++] 백준 8단계 - 2292번 문제 (벌집) (0) | 2023.04.25 |
[C++] 백준 11718번 문제 (그대로 출력하기) (0) | 2023.04.25 |
[C++] 백준 8단계 - 2903번 문제 (중앙 이동 알고리즘) (0) | 2023.04.24 |