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
'[Python]알고리즘 > 이코테 2021' 카테고리의 다른 글
[구현] ▲ 문제4 - 문자열 재정렬 (0) | 2022.03.18 |
---|---|
[구현] 문제3 - 왕실의 나이트 (0) | 2022.03.18 |
[구현] 문제1 - 상하좌우 (0) | 2022.03.18 |
[그리디 알고리즘] 숫자 카드 게임 (0) | 2022.03.18 |
[그리디 알고리즘] ★ 큰 수의 법칙 (0) | 2022.03.18 |