DOTY
10) 백준 1012 - 유기농 배추 본문
728x90
반응형
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
초기화 하는 방법을 헷갈려서 헤맨 문제
#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
int check[51][51];
int cab[51][51];
void cabbage(int x, int y) {
int pos_x = x;
int pos_y = y;
queue<pair<int, int> > position;
position.push(make_pair(pos_x, pos_y));
check[pos_x][pos_y] = 1;
while(!position.empty()) {
pos_x = position.front().first;
pos_y = position.front().second;
for(int i = 0; i < 4; i++) {
if(cab[pos_x + dx[i]][pos_y + dy[i]] == 1 &&
check[pos_x + dx[i]][pos_y + dy[i]] == 0 &&
pos_x+dx[i] > -1 && pos_x+dx[i] < 51 &&
pos_y+dy[i] > -1 && pos_y+dy[i] < 51) {
position.push(make_pair(pos_x+dx[i], pos_y+dy[i]));
check[pos_x + dx[i]][pos_y + dy[i]] = 1;
}
}
position.pop();
}
}
int main(void) {
int T; // testCase
int M, N, K; //width, height, cabbage
int X, Y; //position of cabbage
int cnt = 0;
vector<int> answer;
cin >> T;
for(int i = 0; i < T; i++) {
memset(check, 0, sizeof(check));
memset(cab, 0, sizeof(cab));
cin >> M >> N >> K;
for(int j = 0; j < K; j++) {
cin >> X >> Y;
cab[X][Y] = 1;
}
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
if(check[i][j] == 0 && cab[i][j] == 1) {
cabbage(i, j);
cnt++;
}
}
}
answer.push_back(cnt);
cnt = 0;
}
for(int i = 0; i < answer.size(); i++) {
cout << answer[i] << endl;
}
}
나의 실수는 배열을 각 TC가 시작될 때 아래와 같이 초기화 하려고 했다.
check[51][51] = {0, };
cab[51][51] = {0, };
하지만 잘못된 방법으로 다음 memset을 사용하여 작성하니 맞았다.
memset([배열 이름], [초기화 할 정수], [배열 크기])
memset(check, 0, sizeof(check));
memset(cab, 0, sizeof(cab));
728x90
반응형
'Algorithm > BFS&DFS' 카테고리의 다른 글
12) 백준 2468 - 안전 영역 (0) | 2023.02.26 |
---|---|
11) 프로그래머스 Lv2 - 게임 맵 최단거리 (0) | 2023.02.16 |
9) 프로그래머스 Lv3 - 단어 변환 (0) | 2020.10.15 |
8) 프로그래머스 Lv.3 - 네트워크 (0) | 2020.10.13 |
7) 프로그래머스 Lv.2 - 타겟 넘버 (0) | 2020.10.13 |
Comments