몽셀통통의 블로그
[BaekJoon] 1987 알파벳 :: monton 본문
문제
https://www.acmicpc.net/problem/1987
풀이
visit 배열과 방문한 알파벳인지 확인해주는 배열을 사용하여 dfs를 이용하여 방문
cnt 변수를 사용하여 횟수를 count 해줌
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <iostream> using namespace std; int R, C,ans; char arr[21][21]; int visit[21][21]; int chknum[30]; int dir[4][2] = { {-1,0},{0,1},{1,0},{0,-1} }; void func(int x, int y, int cnt) { if (x < 0 || x >= R || y < 0 || y >= C) return; for (int i = 0; i < 4; i++) { if (!visit[x][y]&&!chknum[arr[x][y]-65]) { visit[x][y] = chknum[arr[x][y] - 65]=1; //printf("x %d y %d arr[x][y]-65 %d\n", x, y, arr[x][y] - 65); ans = ans > cnt ? ans : cnt; func(x + dir[i][0], y + dir[i][1], cnt + 1); visit[x][y] = chknum[arr[x][y] - 65]= 0; } } } int main() { cin >> R >> C; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { cin >> arr[i][j]; } } func(0, 0, 1); cout << ans; } | cs |
'프로그래밍 > 백준 문제 풀기' 카테고리의 다른 글
[BaekJoon] 1194 달이 차오른다, 가자 :: monton (0) | 2018.05.30 |
---|---|
[BaekJoon] 5427 불 :: monton (0) | 2018.05.29 |
[BaekJoon] 2667 단지번호붙이기 :: monton (0) | 2018.05.27 |
[BaekJoon] 1260 DFS와 BFS :: monton (0) | 2018.05.27 |
[BaekJoon] 2146 다리 만들기 :: monton (0) | 2018.05.27 |