Post

[이것이 코딩 테스트다 with Python] 시각(Java)

Goal

“이것이 코딩 테스트다 with Python” 교재의 문제를 분석하고 코드와 함께 이해해보기 위한 글입니다.

문제 분석

먼저 시간 복잡도를 생각해봅시다. 00시 00분 00초부터 23시 59분 59초까의 모든 경우의 수를 계산해보면, 60*60*24 = 86400 이므로 시간 복잡도가 O(N) (문자열 크기) 인 문자열 연산을 사용해도 괜찮을 것 같습니다. 그럼 구현해보겠습니다.

코드 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ViewPoint {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        int cnt = 0;

        for (int hour = 0; hour < n + 1; hour++) {
            for (int min = 0; min < 60; min++) {
                for (int sec = 0; sec < 60; sec++) {
                    StringBuilder sb = new StringBuilder();
                    String temp = sb.append(hour).append(min).append(sec).toString();
                    if (temp.contains("3")) cnt++;
                }
            }
        }

        bw.write("cnt = " + cnt);
        br.close();
        bw.close();
    }
}
This post is licensed under CC BY 4.0 by the author.