난이도: ★☆☆ | 풀이 시간: 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) 유형으로 분류된다. 완전 탐색 알고리즘은 모든 경우의 수를 검사하는 방법이며, 데이터 개수가 적은 경우에 적합하다.


Discover more from Iridescent Seraphim

Subscribe to get the latest posts sent to your email.

Posted in

Leave a comment

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