백준 2210 - 숫자판 점프

Beomsun·2022년 2월 10일
0

algorithm

목록 보기
3/35

백준 2210 - 숫자판 점프

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

간단한 백트래킹 문제이다. 숫자판의 각 좌표들에 대해 재귀를 돌면 숫자를 6번 뽑고 set에 뽑은 숫자를 넣어주고 최종적으로 set의 길이를 리턴해주면 된다.

"""
2210 - 숫자판 점프
"""
grid = []
for i in range(5):
    data = list(map(int,input().split()))
    grid.append(data)

dr = [1,-1,0,0]
dc = [0,0,1,-1]
ret = set()
num = []
def dfs(pick,r,c):
    if pick == 6:## 숫자 6개 뽑기
        ret.add(tuple(num))
        return
    for i in range(4):
        next_r = r + dr[i]
        next_c = c + dc[i]
        if 0<= next_r < 5 and 0<= next_c <5:
            num.append(grid[next_r][next_c])
            dfs(pick+1, next_r, next_c)
            num.pop() # 백트랙킹

for i in range(5):
    for j in range(5):
        dfs(0,i,j)

print(len(ret))

0개의 댓글

관련 채용 정보