https://www.acmicpc.net/problem/18312
[문제]
정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로, 초 단위로만 시각을 구분한다. 예를 들어 K=3일 때, 다음의 시각들은 3이 하나 이상 포함되어 있으므로 세어야 하는 시각의 대표적인 예시이다.
- 23시 00분 00초
- 07시 08분 33초
반면에 다음의 시각들은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 예시이다.
- 15시 02분 55초
- 18시 27분 45초입력
[입력 조건]
첫째 줄에 정수 N과 K가 공백을 기준으로 구분되어 주어진다. (0≤N≤23, 0≤K≤9)
[코드]
import java.util.*;
public class BaekJoon_18312 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
int count=0;
for(int hour=0;hour<=n;hour++) {
for(int min=0;min<60;min++) {
for(int sec=0;sec<60;sec++) {
// 시간을 문자열로 표현, 시,분,초가 10 미만일 경우 앞에 0을 붙인다.
String time=((hour<10)?"0"+hour:""+hour)+
((min<10)?"0"+min:""+min)+
((sec<10)?"0"+sec:""+sec);
// 시간에 k가 포함되어 있다면 count
if(time.contains(""+k))
count++;
}
}
}
System.out.println(count);
}
}
[고찰]
이번 문제는 이전에 풀어봤던 백준의 1436번 영화감독 숌과 비슷한 문제였기 완전탐색으로 모든 시간을 검사하면서cotains() 함수를 사용하여 쉽게 해결할 수 있었다. 단 주의해야할 점은 주어지는 k의 범위는 0~9이기 때문에 시, 분, 초가 10 미만일 경우에는 앞에 0을 붙여 출력해야한다는 것이다. 이렇게 만들어진 문자열이 k를 포함하고 있는지의 여부에 따라 count를 증가시켜주면 된다.
'백준' 카테고리의 다른 글
[백준_11725번] 트리의 부모 찾기 (0) | 2021.08.12 |
---|---|
[백준_14938번] 서강그라운드 (0) | 2021.08.12 |
[백준_19532번] 수학은 비대면강의입니다 (0) | 2021.08.12 |
[백준_20436번] ZOAC 3 (0) | 2021.08.12 |
[백준_2417번] 정수 제곱근 (1) | 2021.08.12 |