문제
예제 4-2
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
- 00시 00분 03초
- 00시 13분 30초
반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안되는 시각이다.
- 00시 02분 55초
- 01시 27분 45초
입력 조건
- 첫째 줄에 정수 N이 입력된다. (0 <= N <= 23)
출력 조건
- 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다.
입력 예시 | 출력 예시 |
5 | 11475 |
풀이
아이디어
- 하루는 86,400초로, 모든 경우의 수가 86,400가지밖에 존재하지 않기 때문에 (경우의 수가 100,000개도 되지 않으므로) 파이썬에서 문자열 연산을 이용해 3이 시각에 포함되어 있는지 확인해도 시간 제한 2초 안에 문제를 해결할 수 있다.
- 전체 시, 분, 초에 대한 경우의 수는 24 x 60 x 60이며 3중 반복문을 이용해 계산할 수 있다.
- => 일반적으로 알고리즘 문제를 풀 때는 확인(탐색)해야 할 전체 데이터의 개수가 100만개 이하일 때 완전 탐색을 사용하면 적절
h = int(input())
count = 0
for i in range(h + 1):
for j in range(60):
for k in range(60):
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
출처: 나동빈, 「이것이 취업을 위한 코딩테스트다 with 파이썬」, 한빛미디어, p.113~114
'Algorithms > 이코테' 카테고리의 다른 글
[DFS/BFS] 탐색 알고리즘 이해하기, 주요 예시 문제 (2) | 2023.10.31 |
---|---|
[Dynamic Programming] - 다이나믹 프로그래밍이란? / 문제 1로 만들기 (0) | 2023.08.27 |
[구현] 이코테 - 상하좌우(py) (0) | 2023.08.07 |
[구현] 이코테 - 문자열 재정렬(py) (0) | 2023.07.30 |
[구현] 이코테 기출 - 럭키 스트레이트(py) (0) | 2023.07.30 |