-
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