728x90
난이도 ♦︎♢♢ | 풀이시간 15분 | 시간제한 2초 | 메모리제한 128MB
[문제]
정수 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이 하나라도 포함되는 모든 경우의 수를 출력한다.
[해설]
- 문제는 모든 시각의 경우를 하나씩 모두 세서 쉽게 풀 수 있는 문제다.
- 경우의 수가 100000개도 되지 않으므로 파이썬 문자열 연산을 이용해 3이 시각에 포함되어있는지 확인해도 풀 수있다.
- 완전탐색 알고리즘에 해당한다.
- 전체 데이터의 개수가 100만개 이하일 때 완전 탐색을 사용하면 적절하다.
- 숫자형을 문자형으로 만들어 '3' 이 포함되어있는지 확인하는 방식을 이용한다.
[소스코드]
# N을 입력받는다
n = int(input())
count = 0
# N시 59분 59초 까지 확인할 것
for h in range(n+1):
for m in range(60):
for s in range(60):
# 매 시각 안에 '3' 이 포함되어있다면 카운트 증가
if '3' in str(h)+ str(m)+ str(s) :
count += 1
print(count)
[느낀점]
완전탐색이라고해서 다른 어려운 걸 생각할 것이 아니라 어떻게 이걸 구현해낼것이고 반복문을 어떻게 설정하는게 좋은지에 대해 알 수있었다. 다른 것보다 if n in ~ : 문법을 잘 기억해서 문자열 내의 문자를 찾기위해서는 어떻게 하는지를 확인해볼 수 있었다.
파이썬은 쉬운 언어인만큼 활용할 수있는 다양한 함수들이 있는데 그런것들을 잘 기억해뒀다가 활용할 수 있어야할것같다.
반응형
'Study Log > 코딩테스트' 카테고리의 다른 글
[구현] 게임 개발 (0) | 2023.05.11 |
---|---|
[구현] 왕실의 나이트 (0) | 2023.05.10 |
[구현] 상하좌우 (0) | 2023.05.08 |
[그리디] 1이 될 때까지 (0) | 2023.04.17 |
[그리디] 숫자 카드 게임 (0) | 2023.04.17 |