[Alg] Implementation - 시각 문제

meredith·2021년 7월 29일
0

Alg

목록 보기
6/9

시각 문제

문제 상황
: 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)
      

code review

비슷하게 보이는 이유는 답안을 봤다.

어떻게 풀어야하는지 조건화시키는 것과 머릿 속 구체화는 다 정리가 됐다고 생각했는데, if 조건문에서 막혔다.

'어떻게 초,분,시를 문자열을 만들까?', '분, 초는 59까지만 돌아야하고, 시는 23시까지만 돌아야하는데 이걸 일일이 문자열로 나열한다면, 메모리가 넘어갈 것 같다' 라고 생각했다.

여기선 삼중 조건문 안에서 str()함수를 사용해 각각 i,j,k를 문자열화 시켰다.
이렇게하니 따로 문자열을 설정하지 않아도 되고, 코드도 간단하다.

profile
해보자고 가보자고

0개의 댓글