시각 - 구현

rrosiee·2022년 7월 24일
0

알고리즘

목록 보기
9/18

이것이 취업을 위한 코딩테스트다 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문을 사용할 수 있다.

  • 100만개 이하의 데이터라면 완전 탐색 방법을 이용해도 됨
  • str에 대한 질의는 'in'을 이용할 것
  • 문제에 대한 완벽한 이해 후 문제를 풀 것
profile
배포 버튼을 누를 때마다 심장이 두근거리는 사람

0개의 댓글

관련 채용 정보