728x90
https://www.acmicpc.net/problem/1987
1987번: 알파벳
세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으
www.acmicpc.net
해당 문제는 완전탐색 + 깊이우선탐색 + 백트래킹 문제로 해결 할 수 있다.
같은 알파벳을 지날 수 없는것이 백트래킹 조건이고 깊이우선탐색과 완전탐색으로 모든 경로를 다 방문해 보면서 갈 수 없는 경로를 백 트래킹 하면 된다.
R, C = map(int, input().split())
board = [input() for _ in range(R)]
max_count = 0
def dfs(i, j, count, visited):
global max_count
max_count = max(max_count, count)
directions = [(1, 0), (-1, 0), (0, 1), (0, -1)]
for dx, dy in directions:
nx, ny = i + dx, j + dy
if 0 <= nx < R and 0 <= ny < C and board[nx][ny] not in visited:
dfs(nx, ny, count + 1, visited + board[nx][ny])
dfs(0, 0, 1, board[0][0])
print(max_count)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2098번 : 외판원 순회 (0) | 2023.07.26 |
---|---|
[백준] 2294번 : 동전 2 (0) | 2023.07.24 |
[백준] 2580번 : 스도쿠 (0) | 2023.07.23 |
[백준] 2585번 : 경비행기 (0) | 2023.07.23 |
[백준] 23083번 : 꿀벌 승연이 (0) | 2023.07.23 |