https://www.acmicpc.net/problem/18312

 

18312번: 시각

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

www.acmicpc.net

 

코드풀이

완전탐색 문제입니다.

처음에 문자열을 통해서 처리할려고, String.format("%02d", hour) 형식으로 하여 05 : 52 : 04 이런식으로 문자열로 한뒤

각 문자열을 다시 또 돌면서 처리할려고했습니다.

그러나 시간을 나눠서 진행할 수 있다는 것을 깨닫고 시간을 나눠서 비교하여 풀었습니다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
	public static int N, K;
	public static int result = 0;
	public static int x, y;
	
    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());
    	
    	simulate();
    	System.out.println(result);
    }
    
    public static void simulate() {
    	for(int hour = 0; hour <= N; hour ++) {
    		for(int minute = 0; minute < 60; minute++) {
    			for(int second = 0; second < 60; second ++) {
    				if( hour % 10 == K || hour / 10 == K || minute % 10 == K || minute / 10 == K || second % 10 == K || second / 10 == K ) {
    					result += 1;
    				}
    			}
    		}
    	}
    }
    
    
}

+ Recent posts