코딩 테스트

[코딩테스트] 백준 2884번: 알람 시계

dev.jelee 2025. 5. 9. 16:48

# 문제

 

# 코드

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

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String[] strs = br.readLine().split(" ");

    int H = Integer.parseInt(strs[0]);
    int M = Integer.parseInt(strs[1]);

    int M2 = M - 45; // - 45분 해주기
    
    if (M2 < 0) { // - 45한 값이 0 보다 작으면 시간 - 1 해주기.
      int H2 = H - 1; 
      M2 += 60; // 분이 음수이면 60분 더해주기.

      if (H2 < 0) { // 시간이 음수이면 24시간 더해주기.
        H2 = H2 + 24;
      }

      System.out.println(H2 + " " + M2);
    } else {
      System.out.println(H + " " + M2);
    }
  }
}

 

# 입/출력 결과

 

# 과정

  • 입력은 BufferedReader + InputStreamReader 사용.
  • 한 줄로 입력되기 때문에 String[] 로 .split(" ") 사용해서 공백 기준으로 나누어서 배열로 저장.
  • 저장된 배열의 각각의 값을 int타입의 H, M에 저장.
  • int 타입의 M2를 만들어서 M - 45; 값을 저장. (45분 전 알림이니까.)
  • if문을 사용하여 본격적으로 식 계산.
    • M2가 0 보다 작으면 다음 식을 만들었음.
      • int타입의 H2를 만들어서 H - 1을 해줌. (분이 음수이니까 시간을 -1 해줘야함)
      • 여기서 만약에 H2가 0 보다 작으면 + 24를 해주기. (시간은 24시간 표기 방법을 사용하니까)
      • M2의 값을 + 60(60분)을 해주기. (예제 출력된 값을 보면 입력된 분 - 45 + 60 해주면 되는 걸 알게 됨)
      • H2와 M2 값 출력.
    • M2가 0 보다 크면 H와 M2 출력.

 

# 느낀 점

  • 다른 사람들이 성공한 소스코드를 보니 간결하게 만든 사람도 있었다. 서로 다르게 작성한게 재밌기도 하고 이렇게도 작성할 수 있구나 라고 알게 되었다. 여튼, 재밌다. ㅎㅎ