[BOJ1987] 알파벳
Updated:
말이 최대한 몇 칸을 지날 수 있는지
- 세로 가로, R C 표
- 각 칸에 대문자 알파벳 하나씩
- 1행 1열에는 말이 놓여있음
- 말은 상하좌우로 인접한 네 칸 중 한 칸으로 이동
- 새로 이동한 칸은 지금까지 지나온 칸에 적혀있는 알파벳과는 달라야함
- 같은 알파벳이 적힌 칸을 두 번 지날 수 없음
- 좌측상단에서 시작해 말이 최대 몇 칸 지나는지, 좌측상단 칸도 포함
입력
- R, C (1<= R, C <=20)
- R개 줄에 걸쳐 보드에 적혀있는 C개의 대문자 알파벳
출력
- 첫째 줄에 말이 지날 수 있는 최대의 칸 수 출력
설계
- DFS를 이용해 지나온 칸을 다 저장면서 다음에 탐색될 칸은 지나온 칸이 아닌 알파벳이면 카운팅
피드백
- 알파벳을 저장하고 비교하는 부분의 아이디어가 잘 안 떠올랐음
- 알파벳 저장 -> dfs 재귀 -> 알파벳 꺼내기 (제일 중요)
- 위의 작업을 vector를 이용하였더니 시간초과가 계속 났다.
- 단순 배열을 이용 : 알파벳 26자, 해당 알파벳을 지나면 +1 (true)
How I solved(click to github)
ref :
BOJ1987
Leave a comment