Algorithm/Baekjoon
-
[C++] 9663번 N-QueenAlgorithm/Baekjoon 2025. 6. 15. 10:51
문제https://www.acmicpc.net/problem/9663 코드#include #include using namespace std;int cnt = 0;void nQueens(int n, int row, vector& col, vector& diag, vector& antiDiag) { if (row == n) { cnt++ return } for (int c = 0; c > n // 2 충돌 표시 벡터 초기화: 열, 대각선, 역대각선 vector col(n, false) vector diag(2 * n - 1, false) vector antiDiag(2 * n - 1, false) // 3 백트래킹 호출: 첫 행부터 ..
-
[C++] 9465번 스티커Algorithm/Baekjoon 2025. 6. 14. 10:47
문제https://www.acmicpc.net/problem/9465 코드#include #include using namespace std;vector preorder;// [start, end) 구간의 서브트리를 후위 순회로 출력void postorder(int start, int end) { if (start >= end) return; int root = preorder[start]; int rightStart = start + 1; // 루트보다 큰 값이 나타날 때까지 왼쪽 서브트리 범위 확정 while (rightStart > value) { preorder.push_back(value); } // 전체 범위에 대해 후위 순..
-
[C++] 9251번 LCSAlgorithm/Baekjoon 2025. 6. 13. 09:45
문제https://www.acmicpc.net/problem/9251 코드#include #include using namespace std;int main() { // 1. 입력 처리: 두 문자열을 공백 기준으로 입력받아 s1, s2에 저장 string s1, s2; cin >> s1 >> s2; int n = s1.size(), m = s2.size(); // 2. DP 배열 선언: 이전 행을 저장할 temp와 현재 행을 저장할 next vector temp(m + 1); vector next(m + 1); // 3. LCS 길이 계산 반복문 for (int i = 1; i 풀이 입력 처리:cin >> s1 >> s2를 통해 두 문자열을 입력..
-
[C++] 5639번 이진 검색 트리Algorithm/Baekjoon 2025. 5. 7. 16:27
문제https://www.acmicpc.net/problem/5639 코드#include #include using namespace std;vector preorder;// [start, end) 구간의 서브트리를 후위 순회로 출력void postorder(int start, int end) { if (start >= end) return; int root = preorder[start]; int rightStart = start + 1; // 루트보다 큰 값이 나타날 때까지 왼쪽 서브트리 범위 확정 while (rightStart > value) { preorder.push_back(value); } // 전체 범위에 대해 후위 순..
-
[C++] 2638번 치즈Algorithm/Baekjoon 2025. 3. 14. 09:32
문제https://www.acmicpc.net/problem/2638 코드#include #include #include using namespace std;int main() { int n, m; cin >> n >> m; // 보드의 행(n)과 열(m) 크기 입력 // 보드 입력 (0: 공기, 1: 치즈) vector> board(n, vector(m)); for (int i = 0; i > board[i][j]; } } int time = 0; // 시간(단계) 카운터 // 치즈가 모두 녹을 때까지 반복 while (true) { // 4방향 이동 (상, 하, 좌, 우) int dx[4] = { -1, 1..
-
[C++] 2448번 별 찍기 - 11Algorithm/Baekjoon 2025. 3. 12. 10:58
문제https://www.acmicpc.net/problem/2448 코드#include #include #include using namespace std;// 별 패턴을 저장할 벡터vector star;/** * 재귀 함수를 이용해 별 패턴을 그리는 함수 * * @param n: 전체 별 패턴의 크기 (n은 3의 거듭제곱 형태) */void drawStars(int n) { // 기본 별 패턴 (n이 3일 때) 정의 if (n == 3) { star.push_back(" * "); star.push_back(" * * "); star.push_back("*****"); return; } // 재귀 호출: n/2 크기의 ..
-
[C++] 2096번 트리 순회Algorithm/Baekjoon 2025. 3. 11. 15:56
문제https://www.acmicpc.net/problem/2096 코드#include #include #include using namespace std;int main(){ ios::sync_with_stdio(false); // 입출력 속도 향상 cin.tie(nullptr); // 입출력 시간 단축 int n; cin >> n; // 줄 개수 입력 int a, b, c; cin >> a >> b >> c; // 첫 번째 줄 입력 // 최대 및 최소 값을 저장하는 변수 초기화 int max0 = a, max1 = b, max2 = c; int min0 = a, min1 = b, min2 = c; // 두 번째 줄부터 처리 for (i..
-
[C++] 2206번 벽 부수고 이동하기Algorithm/Baekjoon 2025. 3. 11. 15:51
문제https://www.acmicpc.net/problem/2206 코드#include #include #include #include using namespace std;/** * BFS를 사용하여 (0,0)에서 (n-1,m-1)까지 이동하는 최단 거리 계산 * 벽(1)을 한 번만 부술 수 있는 조건을 포함 * * @param n : 행 개수 * @param m : 열 개수 * @param board : 주어진 맵 (0: 이동 가능, 1: 벽) * @return 최단 거리 (이동 불가능할 경우 -1 반환) */int bfs(const int& n, const int& m, vector& board) { // 상, 하, 좌, 우 이동 방향 정의 int dx[4] = { -1, 1, 0 ..