ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 2884번 알람시계
    Programming/BaekJoon 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배는 더 빠르게 나온 것을 보았다.

     

    'Programming > BaekJoon' 카테고리의 다른 글

    백준 10950번 A + B - 3  (0) 2021.07.15
    백준 2739번 구구단  (0) 2021.07.14
    백준 14681번 사분면 고르기  (0) 2021.07.14
    백준 9498번 시험 성적  (0) 2021.07.14
    백준 1330번 두 수 비교하기  (0) 2021.07.14

    댓글

Designed by Tistory.