알고리즘/[ Baekjoon ]

[ BOJ ][JAVA][18312] 시각

kim.svadoz 2021. 5. 10. 23:18
728x90
반응형

www.acmicpc.net/problem/18312

 

18312번: 시각

정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로,

www.acmicpc.net

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 600 233 199 42.612%

문제

정수 NK가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로, 초 단위로만 시각을 구분한다.

예를 들어 K=3일 때, 다음의 시각들은 3이 하나 이상 포함되어 있으므로 세어야 하는 시각의 대표적인 예시이다.

  1. 23시 00분 00초
  2. 07시 08분 33초

반면에 다음의 시각들은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 예시이다.

  1. 15시 02분 55초
  2. 18시 27분 45초

입력

첫째 줄에 정수 NK가 공백을 기준으로 구분되어 주어진다. (0≤N≤23, 0≤K≤9)

출력

00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 시각들의 수를 출력한다.

예제 입력 1

5 3

예제 출력 1

11475

코드

import java.io.*;
import java.util.StringTokenizer;
public class p18312 {
    static int n, k;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());

        int h = 0, m = 0, s = 0, cnt = 0;
        while (true) {
            String time = ((h < 10) ? "0" + h : "" + h) + ((m < 10) ? "0" + m : "" + m) + ((s < 10) ? "0" + s : "" + s);
            if (time.indexOf(""+k) != -1) cnt++;
            if (h == n && m == 59 && s == 59) break;
            s++;
            if (s == 60) {
                s = 0;
                m++;
            }
            if (m == 60) {
                m = 0;
                h++;
            }
        }
        System.out.println(cnt);
    }

}
728x90
반응형

'알고리즘 > [ Baekjoon ]' 카테고리의 다른 글

[ BOJ ][JAVA][1939] 중량제한  (0) 2021.05.10
[ BOJ ][JAVA][18430] 무기 공학  (0) 2021.05.10
[ BOJ ][JAVA][17976] Thread Knots  (0) 2021.05.10
[ BOJ ][JAVA][17626] Four Squares  (0) 2021.05.10
[ BOJ ][JAVA][17609] 회문  (0) 2021.05.10