😈 알고리즘/💻 백준
💻 2869번 문제 : 달팽이는 올라가고 싶다 🙋
Buᐢ༝ᐢy
2022. 10. 16. 21:29
2869번: 달팽이는 올라가고 싶다
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.


#include <iostream>
using namespace std;
int main()
{
int A = 0;
int B = 0;
int V = 0;
cin >> A >> B >> V;
int day = (V-B)/(A-B);
if ((V-B)%(A-B)!=0) day++;
cout << day;
}
메모리 (KB) | 시간 (ms) | 코드 길이 (B) |
2020 | 0 | 220 |
🙋 더 알아보기
해당 문제는 식만 이해하면 금방 푸는 문제였다.
V : 총 거리
A : 달팽이가 아침에 움직이는 거리
B : 밤 동안 자면서 미끄러진 거리
🐌 1일차 : 총 거리 - 달팽이가 아침에 움직인 거리 → V - A
🐌 2일차 : 총 거리 - (달팽이가 아침에 움직였던 거리 - 밤에 미끄러진 거리) - 아침에 움직인 거리 → V - (A - B) - A
🐌 3일차 : 총 거리 - (달팽이가 아침에 움직였던 거리 - 밤에 미끄러진 거리) * 2 - 아침에 움직인 거리 → V - (A - B) * 2 - A
반복…
🐌 2일차 : 총 거리 - (어제 아침에 움직인 거리 - 밤에 미끄러진 거리) - 2일차 아침에 움직인 거리
🐌 3일차 : 총 거리 - (이전 아침에 움직인 거리 - 밤에 미끄러진 거리) * 2 - 3일차 아침에 움직인 거리
→ 이런 식으로 n일차에 움직인 거리를 (아침에 움직인 거리 - 밤에 미끄러진 거리) * 날짜 - 1 + 아침에 움직인 거리를 구할 수 있다.
🐌
V - (A - B)(day - 1) - A = 0
이를 정리하면 day = (V - B) / (A - B)이 된다.
하지만 여기서 제출한다면 틀릴 것이다. 왜냐하면 int이기 때문에 소수가 표시되지 않아 몫만 나오기 때문이다. 그래서 따로 형변환을 거치지 않기 위해 if를 사용하여 나머지가 있다면 하루를 더해주는 것으로 마무리하였다.
Uploaded by N2T