본문 바로가기

두두의 알고리즘/문제

[구현] 난이도1, 이취코 113p '시각' (Python)

728x90

<문제>

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

<문제 풀이>

  1. 24*60*60은 100,000보다 작으므로 완전 탐색으로 문제를 풀 수 있다.
  2. n이 3일 때, 13도 세어야 하므로 문자열로 변환하여 계산한다.

<코드>

'''입력 예시
5
'''

n = int(input())

count = 0
for h in range(n+1):
    for m in range(60):
        for s in range(60):
            if str(n) in str(h) or str(n) in str(m) or str(n) in str(s):
                count += 1
print(count)
#220321
n = int(input())

answer = 0
for h in range(n+1):
    for m in range(60):
        for s in range(60):
            if '3' in str(s) or '3' in str(m) or '3' in str(h):
                answer += 1

 

<고쳐야 할 점>

  • 문제 꼼꼼히 읽기
  • 조건문에서 str(n) in str(h)+str(m)+str(s)로 바꿀 수 있다.