반응형
def is_possible(l):
for d in range(1, len(l) // 2 + 1):
for s in range(len(l) - (d*2) + 1):
a_start = s
a_end = s + d
a = l[a_start:a_end]
b_start = a_end
b_end = a_end + d
if b_end > len(l):
break
b = l[b_start:b_end]
if a == b:
return False
return True
n = int(input())
l = []
value = (1, 2, 3)
pos = [[True, True, True] for _ in range(n)]
while len(l) < n:
i = len(l)
is_appended = False
for v in value:
if not pos[i][v - 1]:
continue
l.append(v)
pos[i][v - 1] = False
if is_possible(l):
is_appended = True
break
else:
l.pop()
if not is_appended:
for k in range(3):
pos[i][k] = True
l.pop()
answer = ''
for k in l:
answer += str(k)
print(answer)
반응형
'Develop > 코딩인터뷰' 카테고리의 다른 글
[코딩인터뷰] 백준 14889번 (0) | 2021.03.19 |
---|---|
[코딩인터뷰] 백준 9663번 (0) | 2021.03.19 |
[코딩인터뷰] 트라이 자료 구조 Trie data structure (0) | 2021.03.09 |
[코딩인터뷰] 문제 8.5 (0) | 2020.04.04 |
[코딩인터뷰] 문제 8.4 (0) | 2020.04.04 |
꾸준히 노력하는 개발자 "김예건" 입니다.