코딩 테스트

[코딩테스트] 백준 2869번: 달팽이는 올라가고 싶다.

dev.jelee 2025. 7. 28. 00:29

# 문제


# 코드

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

public class BOJ2869_v2 {
  public static void main(String[] ags) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String[] input = br.readLine().split(" ");
    int A = Integer.parseInt(input[0]); // 낮 up
    int B = Integer.parseInt(input[1]); // 밤 down
    int V = Integer.parseInt(input[2]); // 나무 막대

    // 
    int day = (int) Math.ceil((double)(V-B) / (A-B));
    System.out.println(day);
  }
}

# 입/출력 결과


# 과정

// 풀이 내용: 
// 1. BufferedReader로 입력값 받기.
// 2. String[] input에 입력값을 공백으로 나누어 저장.
// 3. int A, B, V에 각 값 저장.
// 4. 하루에 가는 거리는 A-B, 전날 올라가야하는 거리 V-B
// 5. 전날 올라가야하는 거리 / 하루에 올라가는 거리를 나눈 다음 반올림을 해주기.
// 6. 반올림을 하려면 소수점이 출력되어야해서 double로 형변환시키고 
//	ceil 메서드 사용하여 반올림 한 다음 int 타입으로 다시 바꾸어 주기.

# 메모

  • 처음 나는 while문을 사용하여 result = result + A - B 값이 V 이상이면 break; 되도록 하고 그러하지 않으면 day++ 하여 계산을 했는데, 시간 초과를 했다. 작성한 코드의 계산은 예시 출력값과 동일한데 시간 초과라서 이걸 어떻게 풀어야하나 고민했다.
  • 수학 문제라서 수식으로 만들어야 하는데 나에겐 무리었다. 답이 안 나와서 chat-gpt에 내가 작성한 코드를 그대로 보여주면서 시간 초과가 뜨는데 코드를 리팩토링 해달라고 요청했다. 결과는 전날 올라가야하는 거리 / 하루에 올라가는 거리를 나눈 다음 반올림을 해주면 된다는 것이었다.
  • 수식을 구하는 건 어렵다... ㅠㅠ....