문제
https://www.acmicpc.net/problem/1436
걸린 시간
01 : 26 : 32 실패
풀이
Python3
if __name__ == "__main__":
# 만들 영화의 개수
N = int(input())
# 만든 영화의 개수
count = 0
# 영화의 이름
name = 0
# 666이 들어간 영화제목이 N개만큼 나오면 종료
while N != count:
name += 1
# 연속적으로 등장한 6의 개수
six = 0
# 6이 3번 연속해서 나온다면
for i in str(name):
if six == 3:
break
if i == '6':
six += 1
else:
six = 0
if six == 3:
count += 1
print(name)
문제의 예제만 생각하고 알고리즘을 바로 작성했더니 풀리지 않는다. 뒤늦게서야 경우의 수를 생각해보니 셀 수 없을만큼 많았다. 브루트 포스 문제가 몇가지 조건문으로 해결될 리 없다.
if str(name).find("666") != -1:
count += 1
연속되는 3개의 6
을 찾기 위해 알고리즘을 직접 작성했지만 find 함수를 이용하는것보다 비효율적이다. 그래도 제한시간 2초안에 들어 시간초과는 나지 않았다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 2108번 통계학 (0) | 2020.07.22 |
---|---|
Baekjoon 10773번 제로 (0) | 2020.07.22 |
Baekjoon 7568번 덩치 (0) | 2020.07.22 |
Baekjoon 2941번 크로아티아 알파벳 (0) | 2020.07.21 |
Baekjoon 1316번 그룹 단어 체커 (0) | 2020.07.21 |
댓글