본문 바로가기

분류 전체보기167

유기농 배추 #1012 c++ 풀이 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 유기농 배추를 풀기 위해 dfs 에 대해서 공부했다. https://wannadev.tistory.com/96 BFS, DFS c++ - DFS란, 그래프 전체를 탐색하는 하나의 방법으로써, 하나의 가지(branch)를 모두 탐색한 이후에 다음 branch로 이동하는 방법이다. - 시작 노드에서 깊이가 커지는 방향으로 탐색을 진행하여 더 이 wannadev.tistory.com DFS관점에서 이차원 배열문제를.. 2023. 10. 24.
DFS 활용 Flood Fill 입력 5 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 3 3 3 3 3 3 3 3 3 1 1 3 3 3 1 0 1 1 1 1 0 0 0 0 0 0 0은 빈공간 1은 경계선 1,1은 색칠하고자 하는 위치 3은 칠할 숫자 struct Point{ int row, col; } int D[4][2] = { {-1,0}, {1,0}, {0,-1}, {0,1} }; //상하좌우 int N, Board[MAX_N][MAX_N]; int main(){ cin >> N; for(int i =0; i Board[i][j]; } } int sr, sc, color; cin >> sr >> sc >> color; dfs(sr, sc, color); for(int i =0; i 2023. 10. 24.
Z #1074 c++ 풀이 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 처음 든 생각은, 0,1,2,3 중에 영역을 계속 찾아들어가야하는 것 까지 생각을 했었다. 그런데 문제는 누적수를 어떻게 구하느냐 였다 #include using namespace std; int n, r, c; int ans; void Z(int y, int x, int size) { if (y == r && x == c) { cout = x) { // 1사분면 탐색 Z(y, x, si.. 2023. 10. 23.
BFS, DFS c++ - DFS란, 그래프 전체를 탐색하는 하나의 방법으로써, 하나의 가지(branch)를 모두 탐색한 이후에 다음 branch로 이동하는 방법이다. - 시작 노드에서 깊이가 커지는 방향으로 탐색을 진행하여 더 이상 방문할 인접 노드가 없는 경우 이전 노드로 돌아가서, 다시 깊이우선 탐색을 반복 - 시작점부터 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하고 넘어가는 방법 stack 또는 recursive(재귀 함수)로 구현. 1. 탐색 시작 노드를 스택에 삽입하고 방문처리 2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 2번의 과정을 수행할 수 없을 때까지 반복.. 2023. 10. 23.