문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제 입력 1 복사
2 1 5
예제 출력 1 복사
4
예제 입력 2 복사
5 1 6
예제 출력 2 복사
2
예제 입력 3 복사
100 99 1000000000
예제 출력 3 복사
999999901
<내 코드> 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 current=0;
int day=0;
while(current<V){
current+=A;
if (current >= V) {
day++;
break;
}
current-=B;
day++;
}
System.out.println(day);
}
}
시간초과로 실패 !!
반복문을 빼야할 것 같다
<2트!!>
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=0;
day=(V-A)/(A-B);
if ((V-A)%(A-B)!=0){
day++;
}
day++;
System.out.println(day);
}
}
성공 !
그리고 Scanner보다 BufferedReader 를 사용하여 푸는게
실행 시간을 줄일수 있다고 한다
(BufferedReader, StringTokenizer 사용하여 문자열 분리 형으로 입력받기)
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
문제 이름이 너무 귀엽당 ㅎㅎ
'PS' 카테고리의 다른 글
| [java/백준] 9506번- 약수들의 합 (1) | 2023.08.01 |
|---|---|
| [java/백준]1032번- 명령 프롬프트 (2) | 2023.07.30 |
| [java/백준] 1546번- 평균 (2) | 2023.07.28 |
| [java/백준] 1259번- 팰린드롬수 (0) | 2023.07.25 |
| [java/백준] 2581번- 소수 (1) | 2023.07.23 |