ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][BOJ][JAVA]2869_달팽이는 올라가고 싶다
    백준 2022. 7. 28. 13:48

    문제

    땅 위에 달팽이가 있다. 이 달팽이는 높이가 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

    java 11로 제출하면 하는 게 많아서 무조건 시간초과가 난다고 질문에서 봤다 .

    java 8로 제출 !

     

    import java.util.Scanner;
    
    public class 백준2869 {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
    
            int a,b,v;
            int day=0;
            a = scan.nextInt();
            b = scan.nextInt();
            v = scan.nextInt();
    
            if( a == v ){
                System.out.print(1);
            }
    
            else{
                day = ((v-a)/(a-b)+1);
                if((v-a)%(a-b)!=0){
                    System.out.println(day+1);
                }
                else System.out.println(day);
            }
    
        }
    }

     

    아니근데 이게 시간제한이 짧다보니까 코드 길이가 짧으면 시간초과가 안나려나 ? 해서 

    식을보니 v-a+1하면 입력값과 출력값이 바르게 나오길래 

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
    
            int a,b,v;
            a = scan.nextInt();
            b = scan.nextInt();
            v = scan.nextInt();
    
            System.out.println(v-a+1);
        }
    }

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ이런식으로냈는데 시간초과는 안 나는데 틀렸다고 하네 ...... 반례가 있나 ....?

    728x90

    댓글

Designed by Tistory.
티스토리 친구하기