IT/알고리즘

[알고리즘 문제] 정올 1583 : 개구리 탈출

새박이 2019. 4. 24. 10:00

귀여운 개구리 탈출 문제

이해하는데 어려움이 없기 때문에 바로 코드를 보도록 하자


소스코드↓↓↓


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class escapeFrog {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        
        //입력 수가 0 0이 나올 때까지 반복
        while(true){
            int x = sc.nextInt();
            int y = sc.nextInt();
            
            int height = 0;    //개구리가 올라간 총 높이
            int countDay = 0;    //우물을 탈출하는데 걸린 일수
            
            //우물의 높이보다 개구리가 올라간 높이가 낮을때
            while(height<x){
                height += y;    //하루에 올라갈 수 있는 높이y를 개구리가 올라간 총 높이에 더해줌
                
                //개구리가 올라간게 우물높이보다 높으면 일수 증가시키고 반복 끝
                if(height>=x){
                    countDay++;
                    break;
                }
                
                //개구리가 올라간 총 높이의 20%를 뺌
                height -= height*0.2;
                //하루 증가
                countDay++;
                
                //개구리가 1년안에 탈출을 못했을 경우
                if(countDay>365){
                    break;
                }
            }
            
            if(x==0 && y==0){
                break;
            }else if(countDay>365){
                System.out.println("평생 살아라");
            }else{
                System.out.println(countDay+"일");
            }
        }        
        
    }
cs


맨처음에 입력값으로 100 50을 주면 자꾸 4일이 나와서 디버깅을 해봤는데 반복문이 진행되면서 height이 100이 넘어도 20% 뺀 뒤에 100 이하가 되서 개구리가 하루를 더 고생하는 불상사가.....

그래서 반복문 중간에  


if(height>=x){

countDay++;

break;

}


를 추가시켜 고칠 수 있었다.



실행결과↓↓↓