새소식

자료구조&알고리즘/알고리즘

구현_이코테: 시각

  • -

<문제> 시각

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

ex) 00시 00분 03초

00시 13분 30초

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

ex) 00시 02분 55초

01시 27분 45초

 


<문제 해결 아이디어>

이 문제는 가능한 모든 시각의 경우를 하나씩 모두 세서 풀 수 있는 문제입니다.

이러한 유형은 완전 탐색(Brute Forcing) 문제 유형

 


Solution

n = int(input())
count = 0
time = {'시':0, '분':0, '초':0}

for i in range((n+1)*60*60 -1):
  time['초'] += 1

  if time['초'] == 60:
    time['초'] = 0
    time['분'] += 1

    if time['분'] == 60:
      time['분'] = 0
      time['시'] += 1
  
  if '3' in str(time['초']) or '3' in str(time['분'])  or '3' in str(time['시']) :
    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)
728x90
Contents