-
https://www.acmicpc.net/problem/1987
1987번: 알파벳
세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201987
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 map가 주어지고 각 좌표마다 영어 알파벳이 주어졌을 때, 0,0에서 시작하여
모두 다 다른 알파벳을 방문하는 경우의수 최댓값을 구하는 문제다.
이동은 상하좌우로만 가능하다.
해당 문제는 DFS를 사용하였고, 알파벳을 사용했는지 bool 배열을 통해 확인해 주고
처음 dfs로 가면 최댓값을 비교해 넣어주고 이후 델타를 통해 이동해 가면서 이동한 곳을 찾으면 해당 알파벳 bool을 true로 바꿔주고 재귀를 통해 계속 진행하고 재귀를 끝마치면 방문했던 부분을 false로 두면서 다시 원점으로 돌아오는 방식으로 해결했다. 카운트 부분은 파라미터로 두어서 따로 초기화할 필요 없이 사용 가능했다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 2309 일곱 난쟁이 JAVA (0) 2021.11.08 Baekjoon 3109 빵집 JAVA (0) 2021.11.08 Baekjoon 1074 Z JAVA (0) 2021.11.08 Baekjoon 1992 쿼드 트리 JAVA (0) 2021.11.08 Baekjoon 7576 토마토 JAVA (0) 2021.11.08 댓글