728x90
우선은 product 로 접근을 했고 당연히 메모리 초과가 나왔다. 다음은 리스트에 중첩해서 쌓는 방식으로 했는데 이 역시도 메모리 초과가 나왔다. 그래서 재귀함수를 이용한 리스트 체크를 반복하는 걸로 구현했는데 이는 시간 초과가 나왔다.
dp 를 이용해서 푸는 문제였고, 이를 알기는 했는데 어떻게 할지 몰라서 구현을 못했다. 아래와 같은 방식이라고 한다.

import sys
from itertools import product
import math
# product 실패
sys.setrecursionlimit(10 ** 7)
a = ['O','L','A']
num = int(input())
def check(k):
if k.count('L')>=2:
return False
for i in range(0,len(k)-2):
if k[i]=='A' and k[i+1]=='A' and k[i+2] == 'A':
return False
return True
answer = 0
def re(k):
if len(k)== num:
global answer
answer+=1
else:
if check(k+['L']) == True:
re(k+['L'])
if check(k+['O']) == True:
re(k+['O'])
if check(k+['A']) == True:
re(k+['A'])
re(['O'])
re(['L'])
re(['A'])
print(answer)
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 16432 떡장수와 호랑이 (0) | 2023.05.22 |
|---|---|
| [파이썬] 백준 11404 플로이드 (0) | 2023.05.18 |
| [파이썬] 백준 13397 구간 나누기 2 (1) | 2023.05.15 |
| [파이썬] 백준 1344 축구 (0) | 2023.05.12 |
| [파이썬] 백준 9095 1, 2, 3 더하기 (0) | 2023.05.12 |