문제링크
https://www.acmicpc.net/problem/2661
코드
import sys
n = int(input())
result = []
def isgood(arr):
for i in range(1,len(arr)//2+1):
if arr[-i:]==arr[-i*2:-i]:return False
return True
def dfs():
global result
if len(result)==n:
print(''.join(map(str,result)))
sys.exit()
for i in range(1,4):
result.append(i)
if isgood(result):
dfs()
result.pop()
else:
result.pop()
dfs()
문제풀이
1,2,3 순서대로 result 리스트에 넣어주며 좋은 수열일 경우에 dfs를 돌린다.
check() 함수를 정의하여 좋은 수열을 판별한다.
result길이가 n자리가 되면 출력한다. ( 1,2,3 순서로 추가하기 떄문에 가장 작은 수를 만족한다.)
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 1411_비슷한 단어 (0) | 2023.07.16 |
---|---|
[백준 C++] 1065 : 한수 (0) | 2023.07.16 |
[백준/C++] 1182번 부분수열의 합 (0) | 2023.07.16 |
[백준/Python] 2057 팩토리얼 분해 (0) | 2023.07.16 |
[백준 / Python] 1051번 : 숫자 정사각형 (0) | 2023.07.16 |