Skip to content

Commit 7de6d39

Browse files
committed
issue #35 백준2869 달팽이는 올라가고싶다 자바
1 parent 12b9510 commit 7de6d39

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

‎src/backjoon/_2869.java‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package backjoon;
2+
3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
5+
import java.io.IOException;
6+
import java.io.InputStreamReader;
7+
import java.io.OutputStreamWriter;
8+
import java.util.StringTokenizer;
9+
10+
// https://www.acmicpc.net/problem/2869
11+
// 달팽이는 올라가고 싶다.
12+
13+
public class _2869 {
14+
public static void main(String[] args) throws IOException {
15+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
// sol1 시간초과로 실패
17+
/*
18+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
19+
// String[] input = br.readLine().split(" "); // 시간초과 -> StringTokenizer로 변경
20+
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
21+
int A = Integer.parseInt(st.nextToken()); // 낮에 올라가는 높이
22+
int B = Integer.parseInt(st.nextToken()); // 밤에 미끄러지는 높이
23+
int V = Integer.parseInt(st.nextToken()); // 정상 높이
24+
25+
int oneDay = A - B; // 하루동안 올라갈 수 있는 높이
26+
int day = 0;
27+
int sum = 0; // 누적 높이
28+
29+
while (sum < V) {
30+
sum += oneDay;
31+
if (sum == V) {
32+
break;
33+
}
34+
day++;
35+
}
36+
// System.out.println(day); // 시간초과 -> BufferedWriter로 변경
37+
bw.write(String.valueOf(day));
38+
bw.flush();
39+
bw.close();
40+
*/
41+
// sol2 시간초과를 해결하기위해 반복문 없이 해결
42+
// memory 11500 runtime 76
43+
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
44+
int A = Integer.parseInt(st.nextToken()); // 낮에 올라가는 높이
45+
int B = Integer.parseInt(st.nextToken()); // 밤에 미끄러지는 높이
46+
int V = Integer.parseInt(st.nextToken()); // 정상 높이
47+
48+
// 정상에 도달하려면 (V / (A-B))의 나머지가 0이면 된다. 하지만 초과해서 도달한 경우에는 미끄러지지않으므로 V-B를 빼준다.
49+
int day = (V - B) / (A - B);
50+
//나머지가 있다면 아직 도달하지 못한 것이므로 하루가 추가된다.
51+
if((V - B) % (A - B) != 0){
52+
day++;
53+
}
54+
System.out.println(day);
55+
}
56+
}
57+
/*
58+
input
59+
2 1 5
60+
5 1 6
61+
100 99 1000000000
62+
63+
output
64+
4
65+
2
66+
999 999 901
67+
*/

0 commit comments

Comments
 (0)