본문 바로가기

알고리즘/백준

[백준] 2869 - 달팽이는 올라가고 싶다 (JAVA/ 자바)

반응형

2869번 문제

 

 

뭔가 쉬운 것 같으면서도 어려웠다.. 풀 수 있을 것 같아서 도전하는데도 며칠 걸렸다.. 처음에는 sum에 계산값을 누적시켜서 그 값을 올라가야할 높이와 비교해서 맞을 경우 출력하는 방식으로 하려고 했는데 실패했다..

그래서 V / (A - B) 식으로 계산하려고 했는데 4일 나와야하는 값이 5일이 나오고 2일 나와야하는 값이 1일이 나오는 문제가 있었다.

 

다른 반례들을 보려고 스스로 임의의 값을 정해서 풀어봤더니 정상에 도착하면 미끄러지지 않는다는 조건 때문에 그런 거였다. 그래서 (V - B) / (A - B)를 해주고, (V - B) % (A - B) != 0 일 경우에 day++를 해주는 방식으로 문제를 해결하였다.

 

1. Scanner를 이용한 방법

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 = (V - B) / (A - B);
    if((V - B)  % (A - B) != 0){
        day++;
    }
    System.out.println(day);
    sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

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);
    br.close();
    }
}

 

반응형