인프런 커뮤니티 질문&답변

김기정님의 프로필 이미지
김기정

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-C

2468번 질문드립니다.

작성

·

173

0

http://boj.kr/617eb8d45ad04996bbccba5c14c37430

테스트셋으로 나와있는건 정상으로 출력되는데,

채점하니 틀렸다고 합니다

몇번을 봐도 틀린부분을 모르겠어서 질문드립니다.

 

감사합니다.

답변 2

0

김기정님의 프로필 이미지
김기정
질문자

아... 아.... 아..ㅠㅠ 감사합니다.

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;
}
김기정님의 프로필 이미지
김기정

작성한 질문수

질문하기