[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