본문 바로가기

알고리즘

백준) 숫자판 점프

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

 


arr = []

numbers= [] 

for i in range(5):
  a = list(map(str,input().split()))
  arr.append(a)

dx = [0,0,1,-1]
dy = [-1,1,0,0]


def dfs(x,y,string):

  if len(string) == 6:
    if string not in numbers:
      numbers.append(string)
    return

  for i in range(4):
    nx = dx[i] + x
    ny = dy[i] + y

    if (0 <= nx < 5) and (0 <= ny < 5):
      dfs(nx,ny,string + arr[nx][ny])
  


for i in range(5):
  for j in range(5):
    dfs(i,j,arr[i][j])

print(len(numbers))

 

전형적인 dfs 알고리즘 문제이다.

'알고리즘' 카테고리의 다른 글

백준) 나이트의 이동  (0) 2023.02.21
백준) 나이트의 이동  (0) 2023.02.21
프로그래머스) 둘만의 암호  (0) 2023.02.21
프로그래머스)무인도 여행  (0) 2023.02.21
백준)Hello World!  (0) 2023.02.20