https://www.acmicpc.net/problem/2210
2210번: 숫자판 점프
111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다.
www.acmicpc.net
정답코드:
board=[] #숫자판
result=[] #결과들
for _ in range(5): #5*5 수 board에 받기
line= list(map(str,input().split()))
board.append(line)
def dfs(x,y,num):
if len(num)==6: # 6자리 숫자가 완성되면
if num not in result:#중복되는지 확인후
result.append(num)#result에 추가
return
dx=[-1 , 1, 0, 0]#상하좌우
dy=[0, 0, -1, 1]#상하좌우
for i in range(4):#상화좌우로 이동
nx = x + dx[i]
ny = y + dy[i]
if 0<= nx <5 and 0<= ny <5:#숫자판 범위를 안벗어난다면
dfs(nx,ny,num+board[nx][ny])#이동한곳에 숫자 하나를 연결, 6글자가될때까지 재귀
for i in range(5):#5번씩이동하여 숫자만들기
for j in range(5):
dfs(i,j,board[i][j])
print(len(result))#결과들의 개수 출력