달팽이가 몇 회만에 탈출하는지 코딩해 보세요.
[1] 달팽이가 이동한 거리 : 4
[2] 달팽이가 이동한 거리 : 8
[3] 달팽이가 이동한 거리 : 12
[4] 달팽이가 이동한 거리 : 16
[5] 달팽이가 이동한 거리 : 20
[6] 달팽이가 이동한 거리 : 24
[7] 달팽이가 이동한 거리 : 28
[8] 달팽이가 이동한 거리 : 32
[9] 달팽이가 이동한 거리 : 36
[10] 달팽이가 이동한 거리 : 40
[11] 달팽이가 이동한 거리 : 44
[12] 달팽이가 이동한 거리 : 48
[13] 달팽이가 이동한 거리 : 52
[14] 달팽이가 이동한 거리 : 55
[15] 달팽이가 이동한 거리 : 58
[16] 달팽이가 이동한 거리 : 61
[17] 달팽이가 이동한 거리 : 64
[18] 달팽이가 이동한 거리 : 67
[19] 달팽이가 이동한 거리 : 70
[20] 달팽이가 이동한 거리 : 73
[21] 달팽이가 이동한 거리 : 76
[22] 달팽이가 이동한 거리 : 79
[23] 달팽이가 이동한 거리 : 82
[24] 달팽이가 이동한 거리 : 85
[25] 달팽이가 이동한 거리 : 88
[26] 달팽이가 이동한 거리 : 91
[27] 달팽이가 이동한 거리 : 94
[28] 달팽이가 이동한 거리 : 97
[29] 달팽이가 이동한 거리 : 100
[30] 달팽이가 이동한 거리 : 103
30회만에 우물을 탙출하였습니다.
#include <stdio.h>
int main(void) {
int height = 100, meter = 0, num = 0; // 우물의 높이, 달팽이가 한 번에 이동하는 거리
while (meter <= height) {
num++;
if (meter < 50) {
meter += 5;
meter--;
}
else {
meter += 5;
meter -= 2;
}
printf("[%d] 달팽이가 이동한 거리 : %d\n", num, meter);
}
printf("%d회만에 우물을 탙출하였습니다.", num);
}
height
는 우물의 높이를 뜻한다.
meter
는 달팽이가 한 번에 이동하는 거리를 뜻한다.
num
은 횟수를 뜻한다.
while문
은 meter
가 우물의 높이인 height
를 초과하면 종료된다.
횟수를 뜻하는 num
을 반복할 때마다 1
씩 증가시킨다.
if문
에서 쓰인 조건은 달팽이는 50m 전까지는 5m를 이동한 후 1m를 밑으로 미끄러지며, 50m 이후 2m씩 아래로 미끄러진다.
이다.
meter
가 50
이전이면 5증가
1감소
를 meter
변수에 적용시킨다.50m
에 다다르거나 넘는다면 5증가
2감소
를 meter
변수에 적용시킨다.위의 연산식을 반복해 meter
가 100
을 넘으면 while문
을 빠져나오게 된다.
여기서 주의할 점은 딱 100m
라고 해도 우물을 넘은 것이 아니기 때문에 꼭 조건식을 (meter <= height)
로 =
연산자를 넣어주어야 한다.
while문
을 빠져나온 후 달팽이가 이동한 거리와 몇 회만에 우물을 탈출하였는지에 대한 값을 출력한다.
[1] 달팽이가 이동한 거리 : 4
[2] 달팽이가 이동한 거리 : 8
[3] 달팽이가 이동한 거리 : 12
[4] 달팽이가 이동한 거리 : 16
[5] 달팽이가 이동한 거리 : 20
[6] 달팽이가 이동한 거리 : 24
[7] 달팽이가 이동한 거리 : 28
[8] 달팽이가 이동한 거리 : 32
[9] 달팽이가 이동한 거리 : 36
[10] 달팽이가 이동한 거리 : 40
[11] 달팽이가 이동한 거리 : 44
[12] 달팽이가 이동한 거리 : 48
[13] 달팽이가 이동한 거리 : 52
[14] 달팽이가 이동한 거리 : 55
[15] 달팽이가 이동한 거리 : 58
[16] 달팽이가 이동한 거리 : 61
[17] 달팽이가 이동한 거리 : 64
[18] 달팽이가 이동한 거리 : 67
[19] 달팽이가 이동한 거리 : 70
[20] 달팽이가 이동한 거리 : 73
[21] 달팽이가 이동한 거리 : 76
[22] 달팽이가 이동한 거리 : 79
[23] 달팽이가 이동한 거리 : 82
[24] 달팽이가 이동한 거리 : 85
[25] 달팽이가 이동한 거리 : 88
[26] 달팽이가 이동한 거리 : 91
[27] 달팽이가 이동한 거리 : 94
[28] 달팽이가 이동한 거리 : 97
[29] 달팽이가 이동한 거리 : 100
[30] 달팽이가 이동한 거리 : 103
30회만에 우물을 탙출하였습니다.
소스코드를 보니 삼항연산자
를 사용하면 소스코드를 더 간략하게 줄일 수 있다는 판단이 들어 이번엔 삼항연산자
를 사용하여 변경시켜 보았다.
int main(void) {
int height = 100, meter = 0, num = 0;
while (meter <= height) {
num++;
meter += 5;
meter -= (meter < 50) ? 1 : 2;
printf("[%d] 달팽이가 이동한 거리 : %d\n", num, meter);
}
printf("%d회만에 우물을 탙출하였습니다.", num);
}
조건식 부분을 좀 더 간결하게 표현해보았다.
meter
가 5
씩 증가하는 것은 같으므로 meter += 5;
를 선언해준다.
중요한 것은 미끄러지는 거리이다.
달팽이가 이동한 거리가 50m
가 안 되면 1m
씩 미끄러지고 50m
에 다다르거나 넘으면 2m
씩 미끄러지게 된다.
따라서 다음과 같이 간결하게 표현할 수 있다.
meter += 5;
meter -= (meter < 50) ? 1 : 2;