[BOJ] 2884번 알람 시계 - JAVA

최영환·2022년 9월 25일
0

BaekJoon

목록 보기
10/87
post-thumbnail
## Java 풀이 시 유의사항 ##
클래스명은 Main 으로 작성해야함!

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

/* 풀이 1 */
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 time = br.readLine();
        int h = Integer.parseInt(time.split(" ")[0]);
        int m = Integer.parseInt(time.split(" ")[1]);
        br.close();

        if (m < 45) {
            h--;
            m = 60 - (45 - m);
            if (h < 0) {
                h = 23;
            }
            System.out.println(h + " " + m);
        }
        else {
            m -= 45;
            System.out.println(h + " " + m);
        }
    }
}

/* 풀이 2 */
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 h = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        br.close();

        if (m < 45) {
            h--;
            m = 60 - (45 - m);
            if (h < 0) {
                h = 23;
            }
            System.out.println(h + " " + m);
        }
        else {
            m -= 45;
            System.out.println(h + " " + m);
        }
    }
}

📄 해설

  • 풀이 1풀이 2 의 차이 : StringTokenizer 사용과 미사용의 차이. 실제 성능 상으로도 큰 차이는 없음
  • 3가지의 경우로 생각해야함
    1. m < 45 인 경우 : m = 60 - (45 - m)
      1-1. h < 0 인 경우 : h = 23
    2. 그 외의 경우 : m = 45, h 는 변동 X
profile
조금 느릴게요~

0개의 댓글