관리 메뉴

MOMONOTE

(JAVA) 백준 2869 달팽이는 올라가고 싶다 본문

알고리즘, 코딩테스트/(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);
	}
}
Comments