inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2-B

1012번 질문 있습니다!

263

녕뇽

작성한 질문수 8

0

#include<bits/stdc++.h>
using namespace std;
int a[51][51], visited[51][51], t, m, n, k, x, y;
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};

void dfs(int y, int x) {
	visited[y][x] = 1;
	for(int i=0; i<4; i++) {
		int ny = y + dy[i];
		int nx = x + dx[i];
		if(ny<0 || ny>=n || nx<0 || ny>=m) continue;
		if(!a[ny][nx]) continue;
		if(visited[ny][nx]) continue;
		dfs(ny, nx);
	}
	return;
}
int main() {
	cin >> t;
	while(t--) {
        fill(&a[0][0], &a[0][0] + 51 * 51, 0);
        fill(&visited[0][0], &visited[0][0] + 51 * 51, 0);
		int cnt = 0;
		cin >> m >> n >> k;
		for(int i=0; i<k; i++) {
			cin >> x >> y;
			a[y][x] = 1;
		}
		
		for(int i=0; i<n; i++) {
			for(int j=0; j<m; j++) {
				if(a[i][j] == 1 && visited[i][j] == 0) {
					dfs(i,j);cnt++;
				}
			}
		}
		
	cout << cnt << '\n';
	}
	
	return 0;
}

 

if(!a[ny][nx]) continue;
if(visited[ny][nx]) continue;

이렇게 했을 때 주어진 테스트 케이스는 정답이 나오거든요? 백준 사이트에선 오답이 나오더라구요 선생님이 올려주신 코드랑 차이점이 뭔지 궁금합니다.

C++ 코테 준비 같이 해요!

답변 1

0

큰돌

안녕하세요 ㅎㅎ 제가 주석을 좀 달아봤는데요. 참고 부탁드립니다.

#include<bits/stdc++.h>
using namespace std;
int a[51][51], visited[51][51], t, m, n, k, x, y;
// good
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};

void dfs(int y, int x) {
	// good
	visited[y][x] = 1;
	for(int i=0; i<4; i++) {
		// good
		int ny = y + dy[i];
		int nx = x + dx[i];
		//이부분을 실수 하셨어요. nx 부분이요. 
		if(ny<0 || ny>=n || nx<0 || nx>=m) continue;
		if(!a[ny][nx]) continue;
		if(visited[ny][nx]) continue;
		dfs(ny, nx);
	}
	return;
}
int main() {
	cin >> t;
	//good
	while(t--) {
        fill(&a[0][0], &a[0][0] + 51 * 51, 0);
        fill(&visited[0][0], &visited[0][0] + 51 * 51, 0);
        // good
		int cnt = 0;
		cin >> m >> n >> k;
		// good
		for(int i=0; i<k; i++) {
			cin >> x >> y;
			a[y][x] = 1;
		}
		// good
		for(int i=0; i<n; i++) {
			for(int j=0; j<m; j++) {
				if(a[i][j] == 1 && visited[i][j] == 0) {
					dfs(i,j);cnt++;
				}
			}
		} 
		cout << cnt << '\n';
	}
	
	return 0;
}

0

녕뇽

바보 같은 실수를 하드닛!! 친절한 답변 감사합니다 호

1-E질문입니다!

0

517

2

3-L 틀린 부분 피드백 부탁드립니다.

0

819

2

1-A문제 순열재귀함수 질문입니다.

0

381

1

1-A 일곱난쟁이문제입니다

0

455

1

문제 풀 때 방향성에 대해

0

798

1

맥에서 vs code로 실행 관련 질문입니다

0

522

1

17071번 메모리 초과

0

386

1

1-C질문입니다!

0

418

2

2-B BFS 시간초과질문

0

629

2

1-O 13번 라인

0

441

1

6-J 놀이공원 문제 질문

0

381

1

구현관련 질문

0

482

1

강의 교안

0

319

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

545

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

535

1

1-K

0

473

2

3-G번 질문있습니다.

1

473

3

3-C 실행 시간 질문드립니다.

0

493

1

4-A 문제 풀이 질문있습니다.

0

590

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

435

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

334

1

3-O go 함수 질문 드립니다.

1

446

2

4-A 출력 질문

0

303

1

1주차 1-O 질문드립니다

0

255

1