Baekjoon2869: 달팽이는 올라가고 싶다, 코드 길이는 연산속도와 비례...

Baekjoon2869: 달팽이는 올라가고 싶다, 코드 길이는 연산속도와 비례...

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

추상화

반복문을 활용한다

근데 시간초과로 나온다. 방법이 이게 아닌가 보다

import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int V = sc.nextInt(); int now = 0; int day = 0; while(now

수학적인 계산을 진행한다

달팽이가 도착하기 전 날을 day-1이라고 하자

그 날 밤 달팽이는 (day-1)*(A-B)만큼 올라가 있을 것이다

그리고 도착 당일날(day) 낮 때의 높이는 (day-1)*(A-B)+A이다

부등식을 만들면 (day-1)*(A-B)+A >= V이다

정리하면 day >= (V-A)/(A-B) + 1 이 된다

조건

숫자데이터를 int로 받는다

(V-A)/(A-B)가 정확히 나누어 떨어지는 경우가 아니면 day = (V-A)/(A-B)+2이 된다

정확히 나누어 떨어질 때만 -1을 해주면 된다

import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int V = sc.nextInt(); int day = (V-A)/(A-B)+2; if( (V-A)%(A-B)==0) { day--;} System.out.print(day); }}

?

import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); double A = sc.nextInt(); double B = sc.nextInt(); double V = sc.nextInt(); int day = (int)Math.ceil((V-A)/(A-B)+1); System.out.print(day); }}

??

어쩔 수 없이 buffer를 사용한다

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 = (V-A)/(A-B)+2; if((V-A)%(A-B)==0) { day--; } System.out.print(day); }}

scanner는 더 이상 위대하지 않다

from http://devyoseph.tistory.com/53 by ccl(A) rewrite - 2021-10-12 04:02:05