문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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;
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 - B) / (A - B);
if ((V - B) % (A - B) != 0)
day++;
System.out.println(day);
}
}
풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine()," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int level = 0,count = 0;
while(true){
level += A;
count++;
if (level >= V){
bw.write(Integer.toString(count));
break;
}
level -= B;
}
br.close();
bw.flush();
bw.close();
}
}
처음에 풀었던 코드.. 시간초과가 떴다.
문제를 해결하지 못해서 구글링을 통해 문제를 풀었다.
정답의 풀이
int day = (V - B) / (A - B);
if ((V - B) % (A - B) != 0){
day++;}
System.out.println(day);
day는 전체 길이 - 내려가는 길이 / 올라가는 길이 - 내려가는 길이 이다.
만약 전체 길이 - 내려가는 길이 / 올라가는 길이 - 내려가는 길의 나머지가 남아 있으면 더 올라가야한다는 의미이므로 day ++
이렇게 풀면 시간초과가 뜨지 않는다.
수학적으로 풀어야함에 있어서 어려움이 있었다.
'Programming > Algorithm' 카테고리의 다른 글
[백준] 2775번 : 부녀회장이 될테야 (Java) (0) | 2021.08.01 |
---|---|
[백준] 10250번 : ACM 호텔 (Java) (0) | 2021.07.31 |
[백준] 1193번 : 분수찾기 (0) | 2021.07.30 |
[백준] 2292번 : 벌집 (Java) (0) | 2021.07.28 |
[백준] 1712번 : 손익분기점 (Java) (0) | 2021.07.27 |
댓글