https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


풀이

sys.setrecursionlimit(1000000)

# 상하좌우로 갈 수 있는 모든 경로를 6번 이동
def dfs(depth, r, c, str):
    # 6번 갔으면, str을 set에 넣어주고 return
    if depth == 6:
        result.add(str)
        return
    for di, dj in [[1, 0], [0, 1], [-1, 0], [0, -1]]:
        nr, nc = r + di, c + dj
        if 0 <= nr < 4 and 0 <= nc < 4:
            dfs(depth+1, nr, nc, str + arr[nr][nc])

for tc in range(int(input())):
    arr = [list(map(str, input().split())) for _ in range(4)]

    result = set()
    for i in range(4):
        for j in range(4):
            dfs(0, i, j, arr[i][j])
    print(f'#{tc+1}', len(result))

 


후기

  • 간단한 탐색 문제였다.
  • 함수의 매개변수만 잘 정해주면 된다.
복사했습니다!