[구현] 시각

merong·2023년 2월 17일
0

이코테

목록 보기
6/17
post-thumbnail

<이것이 취업을 위한 코딩 테스트다>를 공부하며 정리한 내용입니다.

문제

❓ 정수 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이 하나라도 포함되는 모든 경우의 수를 출력한다.

입력 예시

5

출력 예시

11475


해설

  • 전체 시, 분, 초에 대한 경우의 수 = 24x60x60 ⇒ 3중 반복문을 이용
  • 모든 경우의 수를 하나씩 검사해보는 ‘완전 탐색’ 유형
  • 비효율적 시간복잡도 but 데이터 개수가 크지 않으면 확실하고 적절한 방법!

내 코드&교재 코드

n=int(input()) #몇시까지?
cnt=0 #경우의 수 카운트

for i in range(n+1): #0~n시까지 체크
    for j in range(60): #0~59분
        for k in range(60): #0~59초
            a=str(i)+str(j)+str(k) #문자열로 합쳐주기
            if '3' in a: #그 안에 3이 포함됐냐
                cnt+=1 #카운트

print(cnt) #경우의 수 출력
profile
매일매일이 새로운 시작점

0개의 댓글