2468번 질문드립니다.
220
김기정
작성한 질문수 3
0
http://boj.kr/617eb8d45ad04996bbccba5c14c37430
테스트셋으로 나와있는건 정상으로 출력되는데,
채점하니 틀렸다고 합니다
몇번을 봐도 틀린부분을 모르겠어서 질문드립니다.
감사합니다.
답변 2
0
안녕하세요. 기정님 ㅎㅎ
코드 정말 잘 짜셨는데요. 딱 한가지 부분이 틀렸습니다. 주석 달아놨는데 참고 부탁드려요.
#include <iostream>
#include <algorithm>
#include <queue>
#define MAX 101
using namespace std;
// good
using ii = pair<int, int>;
int arr[MAX][MAX];
bool visited[MAX][MAX];
int n;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
void bfs(int y, int x, int v) {
// good
visited[y][x] = true;
queue<ii> q;
q.push(make_pair(y, x));
while (!q.empty()) {
ii temp = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
int next_y = temp.first + dy[i];
int next_x = temp.second + dx[i];
// good
if (0 <= next_x && next_x < n && 0 <= next_y && next_y <n ) {
if (arr[next_y][next_x] > v && !visited[next_y][next_x]) {
q.push(make_pair(next_y, next_x));
visited[next_y][next_x] = true;
}
}
}
}
}
int main() {
cin >> n;
// good
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
//비가 내지 않은 경우에는 어떻게 될까요? 이 초기값이 맞을까요?
int max_cnt = 0;
for(int d = 1; d<101;d++) {
int cnt = 0;
// good
fill(&visited[0][0], &visited[0][0] + MAX * MAX, false);
// good
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (d < arr[i][j] && !visited[i][j]) {
bfs(i, j, d);
cnt++;
}
}
}
max_cnt = max(cnt, max_cnt);
}
cout << max_cnt << endl;
}
1-E질문입니다!
0
533
2
3-L 틀린 부분 피드백 부탁드립니다.
0
835
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
469
1
문제 풀 때 방향성에 대해
0
809
1
맥에서 vs code로 실행 관련 질문입니다
0
530
1
17071번 메모리 초과
0
389
1
1-C질문입니다!
0
428
2
2-B BFS 시간초과질문
0
637
2
1-O 13번 라인
0
445
1
6-J 놀이공원 문제 질문
0
388
1
구현관련 질문
0
491
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
539
1
1-K
0
481
2
3-G번 질문있습니다.
1
480
3
3-C 실행 시간 질문드립니다.
0
502
1
4-A 문제 풀이 질문있습니다.
0
601
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
349
1
3-O go 함수 질문 드립니다.
1
452
2
4-A 출력 질문
0
307
1
1주차 1-O 질문드립니다
0
264
1





