[이코테] 구현 - 시각

leedawn·2021년 6월 4일
0

알고리즘

목록 보기
5/6
post-thumbnail

문제

정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야하는 시각이다.

  • 00시 00분 03초
  • 00시 13분 30초

반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다.

  • 00시 02분 55초
  • 01시 27분 45초

입력 조건

  • 첫째 줄에 정수 N이 입력된다. (0 <= N <= 23)

출력 조건

  • 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다.

입력 예시
5

출력 예시
11475

나의 풀이

# 정수 N 입력 받기
n = int(input())

# 숫자 카운트 값
count = 0

# 3 리스트
three = [3, 13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 53]

if n >= 0 and n < 24:  # 0 ~ 23 사이의 N일 때 실행
    for i in range(n+1):
        for j in range(60):
            for k in range(60):
                if i in three or j in three or k in three:
                    count += 1

print(count)

단순히 if문과 for문을 남발한 것 같다.. 조금 더 깔끔하게 코드를 정리하는 법을 익혀야겠다 🥲

답안 예시

# H를 입력받기
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)

매 시각을 문자열로 바꾼 다음 문자열에 '3'이 포함됐는지 검사한다. 다시 말해 00시 00분 00초부터 23시 59분 59초까지 1초씩 늘리며 시, 분, 초를 문자열 자료형으로 변환하여 합친다. 예를 들어 03시 20분 35초일 때를 확인한다면, 이를 '032035'로 만들어서 '3'이 '032035'에 포함되어 있는지를 체크하는 방식을 이용한다.

profile
🌱 Front-End Developer

0개의 댓글

관련 채용 정보