티스토리 뷰
달팽이는 올라가고 싶다 성공다국어
0.15 초 (추가 시간 없음) (하단 참고) | 128 MB | 148049 | 41127 | 34822 | 29.064% |
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제 입력 1 복사
2 1 5
예제 출력 1 복사
4
예제 입력 2 복사
5 1 6
예제 출력 2 복사
2
예제 입력 3 복사
100 99 1000000000
예제 출력 3 복사
999999901
#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
int a, b, c;
cin >> a >> b >> c;
int sum = 0;
int cnt = 0;
while (1)
{
cnt++;
sum +=a;
if (sum >= c)
{
cout << cnt;
break;
}
else
sum -= b;
}
return 0;
}
처음에 짠 코드..
시간초과됐다.
반복문을 쓰지않고 문제를 풀어야한다고 한다.
#include <iostream>
#include <cstring>
using namespace std;
;
int main() {
int A, B, V;
cin>>A>>B>>V;
int day;
if ((V - A) % (A - B) == 0)
day = (V - A) / (A - B);
else
day = (V - A) / (A - B) + 1;
printf("%d\n", day + 1);
}
유투브에 ENTP 컴공석사님의 영상을 참고했다.
우선 반복문을 쓰지않고 단순 연산을 해야한다.
1) V-A를 빼면 올라가야하는 거리가 나온다.
2) 이것을 (A-B)로 나눠주는데, 이게 딱 하루 전 날 까지 구해야한다.
왜냐하면 올라간 날 까지하면 -B를 해버려서 정상에 도착하면 -B를 안한다고 했는데, 이것이 빠져버린다.
즉 하루 전 날 까지 필요한 날을 구하고 거기서 +1일을 해버리면 이것이 바로 정답.
3) 근데 딱 하루 전에 도달하는 경우가 있지만, 그 보다 약간 못 미치게 도달하는 경우가 있다. 그럴 경우는 하루를 더 가야한다.
10의 거리를 가면 하루에 3씩 가고 1씩 떨어진다고 하면, 3일을 가면 9에 거리를 간다. 하지만 -1씩 3일을 했기에 하루가 더 필요하다.
반면 5씩간다면, 2일이면 도달하고 도중에 -1이 되서 9의 높이에 있다. 그렇기에 하루만 더 가면 된다.
이 경우를 나누어서 작성해준다.
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
2839 설탕배탈(C/C++) (0) | 2022.06.24 |
---|---|
백준 10250 ACM호텔 C/C++ (1) | 2022.05.08 |
1193 백준 분수 찾기 C/C++ (0) | 2022.05.07 |
백준 2292 벌집 C/C++ (0) | 2022.05.06 |
백준 1712 손익분기점 C/C++ (0) | 2022.05.06 |
- Total
- Today
- Yesterday
- 뇌와행동의기초
- 열혈프로그래밍
- c++
- 보세사
- 강화학습
- 일본어문법무작정따라하기
- 윤성우
- 티스토리챌린지
- K-MOOC
- stl
- 인프런
- 파이썬
- 사회심리학
- 회계
- 통계
- Python
- 여인권
- 심리학
- 데이터분석
- 백준
- 일문따
- 일본어
- 통계학
- C/C++
- 인지부조화
- jlpt
- 오블완
- 코딩테스트
- C
- 류근관
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |