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
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 1743번 python 풀이 - DFS (0) | 2023.02.28 |
---|---|
[백준/BOJ] - 11725번 python 풀이 - DFS (0) | 2023.02.27 |
[백준/BOJ] - 15810번 python 풀이 - 이분탐색 (0) | 2023.02.01 |
[백준/BOJ] - 9461번 python 풀이 - DP (0) | 2023.01.04 |
[백준/BOJ] - 1932번 python 풀이 - DP (0) | 2023.01.04 |