롤이 재미 없고 심심해서 오랜만에 한 문제 풀어봤다. ps 실력은 오랜 시간 꾸준히 키워야 성장하는데 하락은 한 순간이다. 스키 타는 기분
백트래킹 문제인데 가지치기 효과가 클 것 같은 느낌이 들었다. 쌩으로 돌렸을 때 시간초과가 나는 지는 모르겠음. 아니 근데 왜 상대편도 내편이 되는지는 잘 모르겠음.
arr = [input() for i in range(5)]
prin = [[0 for i in range(5)] for j in range(5)]
diry = [1,-1,0,0]
dirx = [0,0,1,-1]
visit = [[0 for i in range(5)] for j in range(5)]
ans = 0
p = []
def check(s):
global visit
y = s//5
x = s%5
for i in range(4):
ty = y+diry[i]
tx = x+dirx[i]
if ty>=0 and ty<5 and tx>=0 and tx<5:
if visit[ty][tx]==0:
if (ty*5+tx) in p:
visit[ty][tx] = 1
check((ty*5+tx))
def dfs(cnt,idx,yn):
global ans
global visit
if yn>=4 or 25-idx<7-cnt:
return
if cnt==7:
check(p[0])
if sum(sum(visit,[]))==7:
ans+=1
visit = [[0 for i in range(5)] for j in range(5)]
return
y = idx//5
x = idx%5
p.append(idx)
if arr[y][x]=='Y':
dfs(cnt+1,idx+1,yn+1)
else:
dfs(cnt+1,idx+1,yn)
p.pop()
dfs(cnt,idx+1,yn)
dfs(0,0,0)
print(ans)