Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구현
- 키워드 암호화
- 한빛미디어
- 코딩 테스트
- 사과 담기 게임
- 세탁소 사장 동혁
- 5와 6의 차이
- 소가 길을 건너간 이유3
- 욱제는 효도쟁이야!!
- 그리디 알고리즘
- 컬럼 암호화
- 동적 계획 알고리즘
- 위치 암호화
- 백준
- 나동빈
- 시저 암호화
- ZOAC 2
- Greedy
- DES 알고리즘
- 통나무 건너기
- 비연결형 통신
- JoCoding
- 파이썬
- 컴퓨터 네트워크
- 거스름돈
- 문자 변환표
- 전자 메일
- 2 + 1 세일
- Pop
- 대체 암호화
Archives
- Today
- Total
주니어로서의 백 걸음, 개발자로서의 한 걸음
구현 - 시각 본문
문제 해설: 이 문제는 시각을 1씩 증가시키면서 3이 하나라도 포함되어 있는지 확인하면 된다. 전체 시, 분, 초에 대한 경우의 수는 24 x 60 x 60이며 3중 반복문을 이용해 계산할 수 있다.
이러한 유형은 완전 탐색 유형으로 분류되기도 한다. 일반적으로 완전 탐색 알고리즘은 비효율적인 시간 복잡도를 가지고 있으므로 데이터 개수가 큰 경우에 정상적으로 동작하지 않을 수 있다. 그래서 일반적으로 알고리즘 문제를 풀 때는 확인(탐색) 해야 할 전체 데이터의 개수가 100만 개 이하일 때 완전 탐색을 사용하면 적절하다.
다음 소스코드에서는 매 시각을 문자열로 바꾼 다음 문자열에 '3'이 포함됐는지 검사한다. 다시 말해 00시 00분 00초부터 23시 59분 59초까지 1초씩 늘리며 시, 분, 초를 문자열 자료형으로 변환하여 합친다.
ex) 03시 20분 35초일 때를 확인하면, 이를 '032035'로 만들어서 '3'이 '032035'에 포함되어 있는지를 체크하는 방식을 이용한다.
h = int(input())
cnt = 0
for i in range(h + 1):
for j in range(60):
for k in range(60):
if '3' in str(i)+str(j)+str(k):
cnt += 1
print(cnt)
출처: 나동빈, 『이것이 취업을 위한 코딩 테스트다 with 파이썬』(한빛미디어), 113-114p