티스토리 뷰
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하세요.
n = int(input())
count = 0
for i in range(n+1):
if "3" in str(i):
count = count + 3600
else:
count = count + (15 * 60 + (60-15) * 15)
print(count)
나는 그냥 계산했다.
시간에 3이 포함되면 60초 * 60분 = 3600 번은 3이 모두 포함되는 시간이므로, if "3" in str(i)로 따로 이 경우를 나눠주었고, 그렇지 않은 경우에는,
1분당 3초/13초/23초/30~39초/43초/53초 이렇게 15번 3이 포함된 시간이 찾아온다.
그러나, 3분/13분/23분/30~39분/43분/53분 에는 00초 부터 59초 까지 모두가 3이 포함된 시간이므로, 60번 찾아온다.
==> 15 * 60 + (60 - 15) * 15 라는 식이 나온다.
앞 15 * 60은 1분에 15번씩, 60분동안 을 표현한 식이고,
(60 - 15) * 15는 1시간에 15번은 60-15번만큼을 더 세어야 한다는 표현이다.
음, 아니면 더 간단히 이해하려면 이게 낫겠구나.
15 * (60 - 15) + 60 * 15
60분 중 15분을 뺀 45분은 3이 포함되는 시간이 15번 나오고
60분 중 15분에는 3이 포함되는 시간이 60번 나온다.
저자가 제공하는 풀이는 다음과 같다.
n = int(input())
count = 0
for i in range(n+1):
for j in range(60):
for k in range(60):
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
총 경우의 수가 24 * 60 * 60 밖에 되지 않으므로 그냥 모든 경우를 탐색하는 방법을 사용하는 것이 가능하다고 하였다.
무슨 풀이든 다 좋은 것 같다. 내 풀이든, 저자의 풀이든.
'코딩테스트 대비' 카테고리의 다른 글
[이코테] 문자열 재정렬 (0) | 2022.02.10 |
---|---|
[이코테] 왕실의 나이트 (0) | 2022.02.10 |
[프로그래머스] 주차 요금 계산 (0) | 2022.02.08 |
[프로그래머스] k진수에서 소수 개수 구하기 (0) | 2022.02.08 |
[프로그래머스] 최댓값과 최솟값 (0) | 2022.02.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- LGSVL
- dfs
- version
- 백트래킹
- error
- PIP
- BFS
- torchscript
- 프로그래머스
- 최소신장트리
- torch
- 동적프로그래밍
- 카카오
- tensorflow
- 파이썬
- 코딩테스트
- 설치
- CUDA
- matplotlib
- notfound
- 설치하기
- 이것이코딩테스트다
- Python
- 백준
- pytorch
- 다익스트라
- numpy
- shellscript
- docker
- n과m
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함