Programming/BaekJoon

백준 2884번 알람시계

helloworld: 2021. 7. 14. 16:14

시간과 분을 입력받는다.

Scanner를 이용할 수도 있고 BufferedReader를 이용할 수도 있다.

나는 스캐너를 이용했고

조건을 다음과 같이 나누었다.

 

45분 미만일 경우

  -> 분에 15를 더하고 시간에서 1을 빼고,

45분 이상일 경우

  -> 분에서 45를 빼기

 

단, 45분 미만일 경우에

시간이 0인 경우는 시간이 -1이 되므로 시간을 23으로 설정했다.

 

최종적으로

 

45분 미만일 경우

  -> 분에 15를 더하고

  -> 시간이 1 미만인 경우(0인 경우)

       -> 시간 = 23

  -> 시간이 1이상인 경우

      -> 시간 -= 1

45분 이상일 경우

  -> 분에서 45를 빼기

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int h = sc.nextInt();
    int m = sc.nextInt();

    if(m < 45) {
      if(h <1) {
        h = 23;
      } else {
        h -= 1;
      }

      m += 15;
    } else {
      m -= 45;
    }

    System.out.printf("%d %d",h,m);
  }
}

입력은 BufferedReader를 이용할 수도 있다.

위의 내 풀이가 시간이 그렇게 좋게 나오지는 않았다.

인터넷의 다른 풀이를 보니 StringBuilder를 이용한 방법이 내가 푼 방법보다 2.5배는 더 빠르게 나온 것을 보았다.