on
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