작성
·
132
0
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int arr[30][30];
int xx[8] = {0,1,1,1,0,-1,-1,-1};
int yy[8] = {-1,-1,0,1,1,1,0,-1};
struct LOC{
int x;
int y;
LOC(int a, int b){
x = a;
y = b;
}
};
int main() {
int n,cnt = 0;
scanf("%d",&n);
queue<LOC> q;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
scanf("%d",&arr[i][j]); // 지도 만들기
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j<= n; j++){
if(arr[i][j] == 1) {
q.push(LOC(i,j));
arr[i][j] = 0;
while(!q.empty()){
LOC tmp = q.front();
q.pop();
int x1 = tmp.x;
int y1 = tmp.y;
for(int k = 0; k < 8; k++){
int x2 = x1 + xx[k];
int y2 = y2 + yy[k];
if(arr[x2][y2] == 1){
q.push(LOC(x2,y2));
arr[x2][y2] = 0;
}
}
}
cnt++;
}
}
}
printf("%d",cnt);
return 0;
}
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 스스로 코드를 짠 뒤에 선생님의 답과 비교를 했는데 실행하는데 문제는 없으나 계속해서 답이 옳지 못하게 나옵니다. 계속 틀린부분을 찾으려 해봐도 보이지 않아 질문드립니다. 어디서 문제가 발생한거죠?ㅠㅠ
감사합니다ㅠㅠ
저 말고 다른분이 봐야 안보이던게 보이더라구요ㅠㅠㅠ 감사합니다!