반응형
문제
달팽이는 높이가 N인 나무를 올라가고자 한다.
달팽이는 낮에는 A미터를 올라갈 수 있지만, 밤에 휴식을 취하면서 B미터 미끄러져 내려온다.
달팽이가 나무 정상에 도달하기 위해선 며칠이 걸릴까요?
조건 1 : 첫번째 줄에 A, B, N이 공백으로 구분되어 주어집니다.
조건 2 : 정상에 도달하는게 불가능할 경우, -1을 출력하세요. 수열은 수학에서 아래의 점화식으로 정의되는 수열입니다.
입/출력 예시
👉 입력 예시
2 1 5
👉 출력 예시
4
👉 입력 예시
100 101 1000000000
👉 출력 예시
-1
풀이
첫 번째 입력을 예로 들면,
첫째 날 : 낮의 높이는 2이고, 밤의 높이는 1이다.
둘째 날 : 낮의 높이는 3이고, 밤의 높이는 2이다.
셋째 날 : 낮의 높이는 4이고, 밤의 높이는 3이다.
넷째 날 : 낮의 높이는 5이기 때문에 밤까지 갈 것 없이 n에 도달했으니 종료한다.
즉, 항상 i번째 낮에 n높이에 도달하게 되며, 다음과 같은 예외 처리만 하면 된다.
1. n이 0인 경우 : 0번째 날에 도달한다.
2. n이 a보다 낮거나 같은 경우 : 1번째 날에 도달한다.
3. a가 b보다 낮은 경우 : n에 도달할 수 없다.
위의 예외들은 각각 상위에 있는 예외 사항에 해당하지 않아야 한다.
코드
#include <stdio.h>
#include <stdlib.h>
int main() {
int a,b,n;
scanf("%d %d %d",&a, &b, &n);
//높이가 0인 경우
if (n == 0) {
printf("0");
}
//하루만에 올라가는 경우
else if (a >= n) {
printf("1");
}
//올라갈 수 없는 경우
else if (a <= b) {
printf("-1");
}
else {
int day = 1;
int high = a-b;
while (true) {
if(high+a < n){
high += a - b;
day++;
}
else {
printf("%d", day+1);
break;
}
}
}
return 0;
}
반응형
'알고리즘 문제 풀이 > 코뮤니티 추석맞이 코딩 챌린지' 카테고리의 다른 글
[추석맞이 코딩챌린지 Bonus] 공격할 수 없는 Queen c (0) | 2021.09.21 |
---|---|
[추석맞이 코딩챌린지③] 블랙잭 c (0) | 2021.09.20 |
[추석맞이 코딩챌린지①] 피보나치수 c (0) | 2021.09.20 |
댓글