celina의 이것저것
[C++] 백준 2869번 - 달팽이는 올라가고 싶다 본문
반응형
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
접근
우선 내가 작성했던 코드이다(시간초과됨)
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main() {
int a, b, v, y;
int x = 0;
int cnt = 0;
scanf("%d %d %d", &a, &b, &v);
while (true) {
y = x + a;
x = y - b;
if (y < v)
cnt++;
if (y > v) {
cnt++;
break;
}
}
printf("%d", cnt);
return 0;
}
정답에는 전혀 문제가 없다 다만 예제3처럼 숫자가 매우 커지는 경우에는 답이 출력되는 시간이 조금 걸리긴 한다. 어쨌든 문제에서 주어진 시간제한에 초과되기 때문에 틀렸다... ㅎ
시간제한이 없었다면 수학적으로? 계산만하면 되는데 시간제한때문에 다시 처음부터 생각해야한다...ㅎ
무한루프를 썼는데 이걸 안쓰고 구해야한다. 하...ㅎ
코드
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main() {
int a, b, v;
int cnt = 0;
scanf("%d %d %d", &a, &b, &v);
cnt = (v - b - 1) / (a - b) + 1;
printf("%d", cnt);
return 0;
}
리뷰
글 읽기 - 2869문제 이해가안됩니다..ㅠㅠ (acmicpc.net)
글 읽기 - 2869문제 이해가안됩니다..ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
솔직히 저 계산식이 도저히 이해가 안가서 참고했다..
읽어보니까 알것같기도...
그런데도 잘 모르겟음 ㅋㅋㅋㅋㅋㅋㅋㅋ...
출처
2869번: 달팽이는 올라가고 싶다 (acmicpc.net)
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
'자료구조&알고리즘 > 백준' 카테고리의 다른 글
[C++] 백준 17450번 - 과자 사기(??????/) (1) | 2023.02.16 |
---|---|
[C++] 백준 16917번 - 양념 반 후라이드 반 (1) | 2023.02.10 |
[C++] 백준 1212번 - 8진수 2진수 (3) | 2023.02.10 |
[C++] 백준 11365번 - !밀비 급일 (1) | 2023.02.10 |
[C++] 백준 13458번 - 시험 감독 (1) | 2023.01.23 |
Comments