-
알파벳 - 1987Algorithm/BOJ 2020. 3. 29. 16:41123456789101112131415161718192021222324252627282930313233343536373839404142//1987 - 알파벳#include <iostream>using namespace std;int N, M;char arr[20][20];bool alph[26];int xarr[4] = {0, 0, 1, -1};int yarr[4] = {1, -1, 0, 0};void init(){cin >> N >> M;string s;for (int i = 0; i < N; ++i){cin >> s;for (int j = 0; j < M; ++j)arr[i][j] = s[j];}}int ch(int x, int y){alph[arr[x][y] - 'A'] = true;int ret = 0;for (int i = 0; i < 4; ++i)if (x + xarr[i] >= 0 && x + xarr[i] < N && y + yarr[i] >= 0 && y + yarr[i] < M)if (!alph[arr[x + xarr[i]][y + yarr[i]] - 'A'])ret = max(ret, ch(x + xarr[i], y + yarr[i]));alph[arr[x][y] - 'A'] = false;return ret + 1;}int main(){init();alph[arr[0][0] - 'A'] = true;cout << ch(0, 0);}
cs https://www.acmicpc.net/problem/1987
1987번: 알파벳
문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는
www.acmicpc.net
알파벳
현재까지 사용한 알파벳을 boolean배열로 유지하고 최대로 뻗어나갈수 있는 깊이를 반환해주었습니다.
'Algorithm > BOJ' 카테고리의 다른 글
네트워크 연결 - 3780 (0) 2020.04.01 정점들의 거리 - 1761 (0) 2020.03.30 N-Queen - 9663 (0) 2020.03.29 캔디 분배 - 3955 (0) 2020.03.24 이항 계수 3 - 11401 (0) 2020.03.24