- 백준 2869번: 달팽이는 올라가고 싶다
- 문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다.
또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
- 입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
- 출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_2869 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int x = input.indexOf(" ");
int y = input.lastIndexOf(" ");
int a = Integer.parseInt(input.substring(0, x)); // 올라가기
int b = Integer.parseInt(input.substring(x + 1, y)); // 미끄러지기
int v = Integer.parseInt(input.substring(y + 1)); // 막대길이
// 걸리는 시간
int day = (v - b) / (a - b); // (length - down) / (up - down)
if((v - b) % (a- b) != 0) { // 나머지가 있을 경우
day++;
}
br.close();
System.out.println(day);
}
}
+ 추가 풀이(feat. 시간초과..⏰)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_2869 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int x = input.indexOf(" ");
int y = input.lastIndexOf(" ");
int a = Integer.parseInt(input.substring(0, x)); // 올라가기
int b = Integer.parseInt(input.substring(x + 1, y)); // 미끄러지기
int v = Integer.parseInt(input.substring(y + 1)); // 막대길이
int go = 0; // 가는 거리
int day = 1; // 걸리는 시간
while(v > go) {
go += a;
if(v <= go) {
break;
}
go -= b;
day++;
}
br.close();
System.out.println(day);
}
}