ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2869번 - 달팽이는 올라가고 싶다
    알고리즘/백준 2023. 3. 5. 14:00
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Main {
    
    	public static void main(String[] args) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		StringTokenizer st = new StringTokenizer(br.readLine());
    		int A = Integer.parseInt(st.nextToken());
    		int B = Integer.parseInt(st.nextToken());
    		int V = Integer.parseInt(st.nextToken());
    		int day = 1;
    		double diff = A - B;
    		day += Math.ceil((V-A) / diff);
    		System.out.println(day);
    		br.close();
    	}
    }

     

    쉬워보이지만 while이나 for문으로 하루하루를 처리했다가는 바로 시간초과를 보게 됩니다.

     

    문제를 해결하는 아이디어는 결국 마지막 날에는 올라가기만 한다는 점에 착안해서

     

    일수를 계산할 때 V-A를 올라갈 때 며칠이 필요한 지 먼저 계산하고

     

    마지막에 A만큼 올라가는 데 필요한 하루를 더하는 것입니다.

     

    이 때 V-A를 올라갈 때 필요한 일수는 double로 계산해서 올림해줘야 합니다.(아침 저녁 합해서 4씩 올라갈 수 있는데 V-A가 1이라고 해도 일단은 4를 올라간 후에 다음 날 A에 해당하는 5만큼을 올라야 합니다.)

     

    0으로 떨어지지 않는다면 마지막으로 A만큼 오르기 전에 하루를 더 보내야 하기 때문입니다.

    '알고리즘 > 백준' 카테고리의 다른 글

    10250번 - ACM 호텔  (0) 2023.03.08
    4153번 - 직각삼각형  (0) 2023.03.07
    1461번 : 도서관  (0) 2023.03.04
    2775번 - 부녀회장이 될테야  (0) 2023.03.02
    2751번 - 수 정렬하기 2  (0) 2023.03.01
Designed by Tistory.