[Python]알고리즘/이코테 2021

[구현] 문제2 - 시각

HSY_mumu 2022. 3. 18. 22:27
728x90

시각

1) 문제 해결 아이디어

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

완전 탐색: 가능한 경우의 수를 모두 검사해보는 탐색 방법

 

00시 00분 00초 ~ 23시 59분 59초 

모든 경우의 수 = 24 * 60 * 60

 

2) 소스코드

 

(풀이1) 3중 for문을 이용한 일반적인 방식

n = int(input())
cnt = 0  # 경우의 수

for i in range(n + 1):
  for j in range(60):
    for k in range(60):
      # 3이 하나라도 들어있는 경우
      if('3' in (str(i) + str(j) + str(k))):
        cnt += 1

print(cnt)
str() 문자열로 형변환
문자열A in/not in 문자열B 문자열A가 문자열B에 있는지를 True/False로 반환

 

(풀이2) 수학적 접근

n = int(input())
res = (n+1) * 60 * 60  # 경우의 수
h, m, s = 0, 0, 0

# 3이 하나도 포함되어 있지 않은 경우의 수 구하는 함수
def noThreeCount(n):
  res = 0
  for i in range(n):
    # 3이 포함되어있지 않은 경우
    if('3' not in str(i)):
      res += 1
  return res

h = noThreeCount(n + 1)
m = noThreeCount(60)
s = m
res -= h * s * m

print(res)

전체 경우의 수 - 3이 하나도 들어있지 않은 경우의 수

 

728x90