본문 바로가기
백준 풀이

[백준/BOJ] - 2210번 python 풀이 - DFS

by 반오십 코린이 2023. 2. 27.
728x90


1. 숫자판에서 상하좌우로 이동하며 6자리의 수를 완성시키는 것이기 때문에 탐색 문제이다.

2. 만들 수 있는 6자리의 수가 겹칠 가능성이 있으므로 이는 중복된 값을 허용하지 않는 set 자료형을 통해 해결한다.

3. input 받을 때 str형으로 입력받고 숫자 판에 있는 값들을 문자열 + 을 통해 합쳐주고 이를 set 자료형에 저장시켜 겹치는 값들을 예외처리한다.


#모든 위치에서 시작할 수 있게 반복문 세팅
#set으로 겹치는 것들 없애
#문자열로 ㄱㄱ
import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)

dx,dy = (-1,1,0,0),(0,0,-1,1)
s1 = set([])
def dfs(x,y, number):
    number += arr[x][y]
    if len(number) == 6:
        s1.add(number)
        return
    else:
        for i in range(4):
            rx = x + dx[i]
            ry = y + dy[i]
            if (0<=rx<5) and (0<=ry<5):
                dfs(rx,ry,number)


arr = [list(map(str,input().split())) for _ in range(5)]
for i in range(5): #줄
    for j in range(5):
        dfs(i,j,"")
print(len(s1))

 

728x90