알고리즘, 코딩테스트/(JAVA)백준
(JAVA) 백준 2869 달팽이는 올라가고 싶다
momo0503
2021. 6. 15. 19:35
문제 자체는 간단하다.
로직은 맞지만 시간 초과가 발생한다.
import java.util.*;
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();
sc.close();
int days = 1;
int sum = 0;
if(A>=V){
System.out.println(1);
}
while(true){
sum = sum + A;
if(sum>=V){
System.out.println(days);
break;
}
sum = sum - B;
days++;
}//while()
}
}
시간제한이 0.15초....였다.
시간을 줄이기 위해 BufferedReader를 사용해 보았다.
import java.io.*;
import java.util.*;
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 days = 1;
int sum = 0;
if(A>=V){
System.out.println(1);
}
while(true){
sum = sum + A;
if(sum>=V){
System.out.println(days);
break;
}
sum = sum - B;
days++;
}//while()
}
}
결과는
ㅠㅠ
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
막힐 때는 Stranger's LAB!
정말 간단한 구현 로직을 알 수 있었다.
최종답안
import java.io.*;
import java.util.*;
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 - B) / (A - B);
if ((V - B) % (A - B) != 0) {
day++;
}
System.out.println(day);
}
}