[이코테/JAVA] 이코테 - 시각문제
시각 문제
문제
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 ‘3’이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오.
예를 들어, 1을 입력했을 때 다음은 ‘3’이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
- 00시 00분 03초
- 00시 13분 30초
반면에, 다음은 ‘3’이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다.
- 00시 02분 55초
- 01시 27분 45초
풀이
- 시(hour)는 00~24시까지
- 분(minute)은 00~59분까지
초(second)은 00~59초까지 있다.
- 시분초를 반복문을 사용하여 3이 포함되어 있으면 결과값에 1을 더하면 된다.
- 3이 포함되어 있는지 확인하는 것은 매번 확인을 하기 때문에 따로 메서드를 작성하여 호출하기로 하였다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.Scanner;
public class Main {
public static boolean check(int h, int m, int s) {
// 시분초에 3이 하나라도 포함되어 있으면 true를 반환
// '시'는 24시까지만 존재하기 때문에 10을 나눈 나머지가 3인지만 확인하며
// '분'과 '초'는 59초까지 존재하기 때문에 10을 나눈 몫, 나머지가 3인지 확인하여 3이 존재하면 3을 반환
return h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int result = 0;
// 입력한 '시'를 반복문
for (int i = 0; i <= h; i++) {
// 00분 ~ 59분까지 반복
for (int j = 0; j < 60; j++) {
// 00초 ~ 59초까지 반복
for (int k = 0; k < 60; k++) {
// 3이 존재하면 result 값 1 증가
if (check(i, j, k)) result++;
}
}
}
System.out.println(result);
}
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.