시각 문제
문제 상황
: 00시 0분 00초부터 N시 59분 59초까지의 모든 시각 중 3이 하나라도 포함되는 모든 경우의수를 구하는 프로그램
Input : int N (0 <= N <= 23)
Output : int (3이 들어간 횟수)
n = int(input())
count = 0
for hour in range(n+1):
for min in range(60):
for sec in range(60):
if '3' in str(sec)+str(min)+str(hour):
count += 1
print(count)
h = int(input())
count = 0
for i in range(h+1):
for j in range(60):
for k in range(60):
# 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if '3' in str(i)+str(j)+str(k):
count += 1
print(count)
비슷하게 보이는 이유는 답안을 봤다.
어떻게 풀어야하는지 조건화시키는 것과 머릿 속 구체화는 다 정리가 됐다고 생각했는데, if 조건문에서 막혔다.
'어떻게 초,분,시를 문자열을 만들까?', '분, 초는 59까지만 돌아야하고, 시는 23시까지만 돌아야하는데 이걸 일일이 문자열로 나열한다면, 메모리가 넘어갈 것 같다' 라고 생각했다.
여기선 삼중 조건문 안에서 str()함수를 사용해 각각 i,j,k를 문자열화 시켰다.
이렇게하니 따로 문자열을 설정하지 않아도 되고, 코드도 간단하다.