반응형
백트래킹 문제.
dfs로 돌려서 경로를 s에 튜플 형태로 모두 저장했다. 그 후에 s를 set으로 바꿔서 중복을 제거하고 갯수를 세어주면 오케이
#https://www.acmicpc.net/problem/17255
from collections import deque
def dfs(start,end,res):
vis=deque(res[-1])
if len(vis)==len(l):
s.append(tuple(res))
return
if start-1>=0:
vis.appendleft(l[start-1])
res.append(tuple(vis))
dfs(start-1,end,res)
vis.popleft()
res.pop()
if end+1<len(l):
vis.append(l[end+1])
res.append(tuple(vis))
dfs(start,end+1,res)
vis.pop()
res.pop()
n=int(input())
l=list(str(n))
res=[]
s=[]
for x in range(len(l)):
dfs(x,x,[(l[x])])
s=set(s)
print(len(s))
반응형