🔍동굴 탈출하기
- 어떤 사람이 걸어가다, 이 동굴에 빠졌다.
이때, 이 사람은 며칠만에 동굴에서 탈출할 수 있을까?
- 동굴의 높이 = 300미터
하루동안 올라갈 수 있는 최대 높이 = 40미터
자는 동안에, 미끄러지는 높이 = 17미터
✏️Algorithm
variable
1. 동굴의 높이 = 300m
2. 하루동안 올라갈 수 있는 높이 = 40m
3. 미끄러지는 높이 = 17m
4. 누적 높이
result
1. 총 높이
2. 탈출 날짜
사람이 길을 걷다가 동굴로 떨어졌다.
Day1. + 40m > -17m = 누적 높이(23m)
Day2. + 40m > -17m = 누적 높이(46m)
Day3. + 40m > -17m = 누적 높이(69m)
Day4. + 40m > -17m = 누적 높이(92m)
Day5. + 40m > -17m = 누적 높이(115m)
Day6. + 40m > -17m = 누적 높이(138m)
Day7. + 40m > -17m = 누적 높이(161m)
Day8. + 40m > -17m = 누적 높이(184m)
Day9. + 40m > -17m = 누적 높이(207m)
Day10. + 40m > -17m = 누적 높이(230m)
Day11. + 40m > -17m = 누적 높이(253m)
Day12. + 40m > -17m = 누적 높이(276m)
Day13. + 40m = 누적 높이(316m) > 탈출
예외,
Day13. + 40m = 누적 높이(316m) > -17m = 누적 높이(299m)
Day14. + 40m = 누적 높이(339m) > 탈출
사람이 동굴 밖으로 나왔다.
✍️Coding
package test1;
public class EscapeTheCave {
public static void main(String[] args) {
int caveHeight = 300;
int h = 40;
int s = 17;
int sum = 0;
int day = 0;
while(true) {
if(sum > caveHeight) {
System.out.println("드디어 탈출했다!");
System.out.println("탈출 날짜: " + day + "일");
day++;
System.out.println("총 높이: " + sum + "m");
sum = sum + h ;
break;
}
else if(sum <= caveHeight) {
System.out.println("동굴 안");
System.out.println("Day: " + day + "일");
day++;
System.out.println("누적 높이: " + sum + "m");
sum = sum + (h - s);
System.out.println("==========================");
}
}
}
}
👏Result
드디어 탈출했다!
탈출 날짜: 14일
총 높이: 322m
🤓해결과정 & 문제점
- 각 요소마다 변수잡기
- 어떤 반복문과 조건문을 쓸 지 정하기
- for문 : 반복 횟수를 알고 있을 때 주로 사용.
- While문 : 조건에 따라 반복을 계속할지 결정할 때 사용.
📌 문제점 : sum의 범위를 잘못 잡아서 결과값이 다르게 나왔다.