난이도: ★☆☆ | 풀이 시간: 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이 하나라도 포함되는 모든 경우의 수를 출력한다.

일단, 00시 00분 00초 ~ N시 59분 59초까지 모든 시각을 다 확인해본다.

구조적으로 시각은
시: 0 ~ N
분: 0 ~ 59
초: 0 ~ 59
이니까…

N = int(input())
count = 0
for h in range(N + 1):
for m in range(60):
for s in range(60):
if "3" in str(h) or "3" in str(m) or "3" in str(s):
count += 1
print(count)

예를 들어 책에서처럼 입력 예시 5를 넣으면 출력 예시 11475가 나오는지 한번 돌려봤다.

정확하게 잘 나온다.

그럼 책은 어떻게 문제를 풀었는지 확인해봤다.
완전 똑같다…… 변수 몇개 빼고는..

물론 막히는 부분에서 ai의 도움을 받아가며 풀기는 했지만 내 스스로 풀어낸게 해석과 똑같아서 소름돋았다 ㅎㅎ

앞으로도 고민해가면서 풀면 모두 내게 되지 않을까..

앞부분 거는 전혀 내 스스로 풀지 않아서 내걸 만들기 위해선 좀 더 연습이 필요할 것 같다. 막막했는데 조금씩 한줄기 빛이 보이는 것 같다.

문제 해설: 이 문제는 하루의 모든 시각을 세어서 쉽게 풀 수 있는 문제로, 하루는 86,400초로 구성되어 있어 경우의 수가 적어 파이썬의 문자열 연산을 통해 3이 포함되어 있는지를 확인할 수 있다. 따라서 시각을 1씩 증가시키며 3의 포함 여부를 검사하면 된다. 전체 경우의 수는 24 × 60 × 60이며, 완전 탐색(Brute Forcing) 유형으로 분류된다. 완전 탐색 알고리즘은 모든 경우의 수를 검사하는 방법이며, 데이터 개수가 적은 경우에 적합하다.


Iridescent Seraphim에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

인기 검색어