dfs 3

백준 1260: DFS와 BFS [C++]

https://www.acmicpc.net/problem/1260 클래스 3 승급 필수문제가 하나 남았길래... 근데 이걸 안 풀었길래... ㅋㅋ3 에센셜에 그래프 탐색문제가 참 많은듯?? DFS는 이제 잘 쓴다void dfs(int idx, vector&ans_dfs){ visited_dfs[idx] = true; ans_dfs.push_back(idx); for(int i=1;i BFS큐!! 를 쓴다는 것을 꼭 기억할 것시작정점을 큐에 넣고, 그걸 빼면서 그 자식이 되는 정점들을 반복문으로 큐에 넣고... 반복void bfs(vector&ans_bfs){ queue q; q.push(v); visited_bfs[v] = true; while(!q.empty()){..

알고리즘 2024.07.19

백준 10026: 적록색약[C++]

https://www.acmicpc.net/problem/10026 그래프에서 구역을 찾는 문제 = DFS. 이제 바로바로 튀어나온다적록색약인 사람과 아닌 사람의 차이는 R과 G를 똑같이 처리하냐 아니냐밖에 없으므로, 그냥 보드를 따로따로 만들고 함수도 (귀찮아서) 따로따로 만들어 각자 실행해줬다.visited 배열도 두 개 만들어도 될 테지만 이건 그냥 memset(visited, 0, sizeof(visited)) 로 초기화해서 재사용 반복문으로 상하좌우를 탐색.순환호출의 조건은 다음 좌표가 보드 안에 있을 것, 그리고 같은 색깔 즉 같은 char값을 가질 것이다. (visited가 방문되지 않았음은 당연하고)void dfs(int x, int y){ char color = board[x][y]..

알고리즘 2024.07.18

백준 1012: 유기농 배추 [C++]

https://www.acmicpc.net/problem/1012  가로길이 3, 세로길이 2인 표가 있다고 치자.아보카도고래가오리소방차고슴도치송전탑일반적으로 좌표 표기는 (행, 열)로 한다. 고래의 좌표는 0행 1열이므로 (0, 1) 처럼 표기할 수 있다.행과 열의 뜻이 그러하듯 0은 세로길이 기준이고 1은 가로길이 기준이다.송전탑의 좌표 역시 1행 2열이므로 (1, 2)이다. 순서대로 세로길이, 가로길이 기준이다.그러니까 가로길이 M, 세로길이 N을 주고 좌표를 x(m 기준), y(n 기준) 으로 줬다면 표기할 때는 둘을 뒤집어서 board[y][x] = 1과 같이 표기해줘야 하는 것이다. 상하좌우로 이웃한 배추들은 하나로 쳐도 된다.주어진 보드에서 상하좌우 이웃한 배추들의 덩어리가 몇 갠지 세는 문..

알고리즘 2024.07.09