diff --git a/.gitignore b/.gitignore index b9f4630..6eb604d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .idea/ /.vscode cmake-build-debug/ -CMakeLists.txt \ No newline at end of file +CMakeLists.txt +.clang-tidy \ No newline at end of file diff --git a/g0rnn/README.md b/g0rnn/README.md index c772e8f..b14c8af 100644 --- a/g0rnn/README.md +++ b/g0rnn/README.md @@ -15,6 +15,14 @@ | 11차시 | 2024.12.30 | dp | [기타리스트](https://www.acmicpc.net/problem/1495) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/49 | | 12차시 | 2025.01.02 | bfs | [회장뽑기](https://www.acmicpc.net/problem/2660) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/50 | | 13차시 | 2025.01.05 | 백트래킹 | [스타트와 링크](https://www.acmicpc.net/problem/14889) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/52 | +| 14차시 | 2025.01.07 | 백트레킹 | [N-Queen](https://www.acmicpc.net/problem/9663) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/53 | +| 15차시 | 2025.01.15 | 백트래킹 | [알파벳](https://www.acmicpc.net/problem/1987) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/60 | + + + + + + --- diff --git a/g0rnn/backtracking/15-g0rnn.cpp b/g0rnn/backtracking/15-g0rnn.cpp new file mode 100644 index 0000000..a27dc41 --- /dev/null +++ b/g0rnn/backtracking/15-g0rnn.cpp @@ -0,0 +1,37 @@ +// +// Created by 김균호 on 2025. 1. 14.. +// +#include +using namespace std; + +int r, c; +string line; +int answer = 0; +char board[20][20]; +bool visited[26]; +int offset[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; + +void backtrack(int x, int y, int cnt) { + answer = max(answer, cnt); + for (auto &dir: offset) { + int nx = x + dir[0]; + int ny = y + dir[1]; + if (0 <= nx && nx < c && 0 <= ny && ny < r && !visited[board[ny][nx] - 'A']) { + visited[board[ny][nx] - 'A'] = true; + backtrack(nx, ny, cnt + 1); + visited[board[ny][nx] - 'A'] = false; + } + } +} + +int main() { + cin >> r >> c; + for (int i = 0; i < r; i++) { + cin >> line; + for (int k = 0; k < line.size(); k++) board[i][k] = line[k]; + } + visited[board[0][0] - 'A'] = true; + backtrack(0, 0, 1); + cout << answer; + return 0; +}