[C++/16234] 인구 이동 - using BFS
문제 아이디어: BFS 연합 정보를 기록하는 vector를 만들어서 인구 수 차이가 연합을 생성할 수 있다면 vector에 좌표를 추가하고 마지막에 인구 수를 나눠서 저장한다. // 동 서 남 북 int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int L, R; void process(vector &v, vector &unions, int x, int y, int index) { // 연결된 연합 도시 정보 vector united; united.push_back({x, y}); // BFS queue queue q; q.push({x, y}); unions[x][y] = index; int sum = v[x][y]; // 인구 수 총합 int count ..
[C++/3190] 뱀 - Implementation
문제 아이디어: 좌표를 저장하는 vector를 만들고, 사과가 없는 경우 꼬리를 자르기 위한 vector를 따로 만들어서 관리한다. #include #include #include using namespace std; int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; int main() { // N(보드 크기), K(사과 수), L(뱀 회전 수) int N, K, L; int result = 0; cin>>N; vector v(N, vector(N, 0)); cin>>K; for(int i = 0;i >a>>b; v[a - 1][b - 1] = 1; } vector snake; cin>>L; for(int i = ..
[C++/18405] 경쟁적 전염 - using BFS
문제 아이디어: BFS 바이러스의 위치 좌표를 queue에 넣어서 이를 확인하며 바이러스가 진행할 수 있는 칸의 값을 바꾸며 탐색을 진행한다. #include #include #include using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int main() { // N(시험관 크기), K(바이러스 종류) int N, K; cin>>N>>K; vector v(200, vector(200, 0)); vector virus[1001]; for(int i = 0;i >temp; v[i][j] = temp; if (temp != 0) ..