[이것이 코딩 테스트다] 구현 - 시각

YEAh·2021년 3월 2일
0
post-thumbnail

구현
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
완전 탐색 - 모든 경우의 수를 주저 없이 다 계산하는 해결 방법
시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행


✅ 문제

정수 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개 있을 때의 경우로 접근을 했더니 따져야 하는 경우의 수가 너무 많았다.
중간에 문제 푸는 방법을 잘 못 생각했다면 빨리 다른 방법을 생각하는 것도 중요한 것 같다.

profile
End up being.

0개의 댓글