이것이 취업을 위한 코딩테스트다 113쪽
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오.
입력
5
출력
11475
N = int(input())
result = 0
temp = 0
for i in range(60):
for k in range(len(str(i))):
if str(i)[k] == '3':
result += 1
break
for i in range(N + 1):
for k in range(len(str(i))):
if str(i)[k] == '3':
temp += 1
break
result = (N - temp + 1) * ((result * 60) + (result * (60 - result))) + temp * 60 * 60
print(result)
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)
나의 코드는 경우의 수를 계산하는 느낌이고, 책의 풀이는 하나씩 for문을 돌려 확인하는 방법이다. 시간 복잡도를 고려해서 코드를 짰기 때문이다. 그러나 코딩테스트의 경우 100만개 이하의 연산이라면 for문을 사용해도 무방하다. 그러므로 3중 for문을 사용할 수 있다.