구현
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
완전 탐색 - 모든 경우의 수를 주저 없이 다 계산하는 해결 방법
시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오
5
11475
N = int(input())
result = 0
for i in range(N + 1):
for j in range(60):
for k in range(60):
# 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
# 두자리 숫자는 '3'이 포함되어 있는지 확인하기 어려우므로 문자열로 바꿔서 확인
# in 키워드, find() 함수를 사용하여 특정 문자열 포함되어 있는지 확인
if '3' in str(i) + str(j) + str(k):
result += 1
print(result)
시, 분, 초로 중첩 반복문을 만들어서 00:00:00부터 N:59:59까지 차례로 확인하여 3이 포함되어 있는 시간 횟수를 세준다.
00:00:00부터 시간이 흘러가면서 '3'이 있는 경우를 찾아내는 방법을 생각해내지 못했을까.. '3'이 1개 있을 때, 2개 있을 때의 경우로 접근을 했더니 따져야 하는 경우의 수가 너무 많았다.
중간에 문제 푸는 방법을 잘 못 생각했다면 빨리 다른 방법을 생각하는 것도 중요한 것 같다.