[Python] 코딩 도장 - 3이 나타나는 시간

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 3이 나타나는 시간] - Lv.1

피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때,

디지털 시계에 하루동안(00:00~23:59) 3이 표시되는 시간을 초로 환산하면 총 몇 초(second) 일까요?

디지털 시계는 하루동안 다음과 같이 시:분(00:00~23:59)으로 표시됩니다.

00:00 (60초간 표시됨)
00:01 
00:02 
...
23:59

출처: https://codingdojang.com/scode/473?answer_mode=hide


[풀이]

# 60분 * 24
miniute = 60*24

# 찾을 숫자 3
find_num = 3

# 찾을 숫자가 표시되는 시간
count = 0

for time in range(miniute):
    
    # 디지털 시계: "시"
    h = str(time // 60).zfill(2)
    
    # 디지털 시계: "분"
    m = str(time % 60).zfill(2)
    
    # 디지털 시계 완성
    clock = h + ":" + m
    
    # 찾는 숫자가 있으면 + 60초
    if clock.find(str(find_num)) >= 0:
        count += 60
        
print(count,"초")

# for문 range는 마지막을 제외하므로 23:59까지 잘 나옴
print(clock)

하루 24시간을 분으로 표현하면 0분에서 1440분으로 나타날 것이다.

24시간 디지털 시계에서 분으로 표현한 시간을 60으로 나누었을 때 몫은 시가 되고 나머지는 분이 된다.

전체 시간을 for문으로 만들어주면서 find로 찾을 숫자가 있으면 60초를 더해 답을 구했다.


[추천 풀이]

sumSec=0    # 초의 총합을 저장할 변수
for hour in range(24) :     # 시간
    for minute in range(60) :   #분
        if '3' in str(hour) or '3' in str(minute) : # 시간이나 분에 3이 들어가면
            sumSec += 60            # 60초씩 더함
print(sumSec)

다른 분들이 풀이한 내용 중 추천 수가 많은 풀이이다.

for문을 시와 분에 따라 생성하여서 구하였다.

내가 for문을 하나로 만들려고 했다면 이 분은 직관적이게 푸신거 같다.

Leave a comment