[백준/파이썬] 2210 숫자판 점프

bye9·2021년 1월 29일
0

알고리즘(코테)

목록 보기
35/130
post-custom-banner

https://www.acmicpc.net/problem/2210


알고리즘 분류

  • DFS
  • 브루트포스

문제풀이

0,0부터 4,4까지 모든 시작점에서 dfs함수 실행.

dfs함수는 만든 수의 길이가 6이 될때까지 인접해 있는 네 방향으로 다섯 번 이동하면서 숫자를 이어붙이게 된다.

소스코드

def dfs(x,y,number):
  if len(number)==6:
    if number not in result:
      result.append(number)
    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 nx<0 or nx>=5 or ny<0 or ny>=5:
      continue
    else:
      dfs(nx,ny,number+board[nx][ny])

board=[]
for i in range(5):
  board.append(list(map(str, input().split())))

result=[]
for i in range(5):
  for j in range(5):
    dfs(i,j,board[i][j])
print(len(result))
참고: https://claude-u.tistory.com/433
post-custom-banner

0개의 댓글