이것이 코딩 테스트다 - chapter04 - 예제4-2 시각

 

문제

 

정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.

  • 00시 00분 03초
  • 00시 13분 00초

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

  • 00시 02분 55초
  • 01시 27분 45초

 

생각

 

1. 완전 탐색으로 3중 for문을 통해 String으로 변환해서 contains로 "3"이 포함되면 반환하도록 설계 -> 백준 실패

2. 그렇다면 그냥 int형으로 2시 57분 03초 라면 25703이기때문에 시/분/초를 각각 10으로 나누어 나머지나 몫을 확인하는 방식으로

 

 

코드

 

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

public class Main {
    //이코테 4챕터 4-2 시각  //백준 18312
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int count=0;
        for(int i=0;i<=N;i++) {
            for(int j=0;j<60;j++) {
                for(int k=0;k<60;k++) { //String 으로 변환해서 contains로 하면 틀림
                    if(i % 10 == M || i / 10 == M || j% 10 == M || j / 10 == M || k % 10 == M || k / 10 == M) {
                        count++;
                    }
                }
            }
        }
        System.out.println(count);
    }
}

 

+ Recent posts