이코테 예제 4-2 : 시각 (python)

Maru·2022년 7월 19일
0

1. 문제

정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오.

2. 내 아이디어

  • 각 시, 분, 초에서 숫자 3이 들어가는 경우의 수를 구하고
  • 3포함이 1번인 경우, 2번인 경우, 3번인 경우를 모두 구해 더하고자 했다. (다소 고딩스러운 발상인듯..)

3. 내 코드 (틀림)

N = int(input())

hour = 0
m = 0

for i in range(N+1):
    if i / 10 == 3:
        hour += 1 
        continue
    if i % 10 == 3:
        hour += 1

for i in range(60):
    if i / 10 == 3:
        m += 1
        continue
    if i % 10 == 3:
        m += 1

result = 0

result += hour*60*60 + 24*m*60*2 + hour*m*60*2 + 24*m*m + hour*m*m
        
print(result)

4. 교재 아이디어

  • 모든 경우의 수가 86400가지 뿐이므로 3중 반복문을 사용해 충분히 계산할 수 있다.(완전탐색)
  • 매 시각을 문자열로 바꾼 다음, 문자열에 '3'이 있는지 검사한다.

5. 교재 코드

h = int(input())

count = 0
for i in range(h+1):
    for j in range(60):
        for k in range(60):
            if '3' in str(i)+str(j)+str(k):
                count+=1
                
print(count)

문법 설명

  • 파이썬 내장함수 str()은 데이터의 타입을 string으로 바꿔준다.
  • 문자열 중 특정 문자가 있는지 확인 할 땐 for in을 사용한다.
profile
함께 일하고 싶은 개발자

0개의 댓글