wogus4187   2년 전

BFS로 풀었고 BFS 함수가 실행될때마다 카운트 늘려가는 방식으로 구현했는데 채점하자마자 틀렸다고 나오네요...

혹시나해서 주변에 이 문제 푼사람들과 비교해도 차이가 없어 어떤 부분에서 틀렸는지 질문드리고자 합니다.

wogus4187   2년 전

답변 감사합니다. 그런데 문제의 조건을 다시한번 살펴보니 X의 범위는 0 <= X <= M-1, 0 <= Y <= N-1이라는 전제가 주어져 있어 말씀하신대로 범위를 바꿔봐도 해결이 되지 않는것같습니다.

hellogaon   2년 전

입력 조건에 대하여 좀 더 자세히 살펴보겠습니다!

그 다음 줄부터 각각의 테스트 케이스에 대해 첫째 줄에는 배추를 심은 배추밭의 가로길이 M(1 ≤ M ≤ 50)과 세로길이 N(1 ≤ N ≤ 50),

그리고 배추가 심어져 있는 위치의 개수 K(1 ≤ K ≤ 2500)이 주어진다. 그 다음 K줄에는 배추의 위치 X(0 ≤ X ≤ M-1), Y(0 ≤ Y ≤ N-1)가 주어진다.

M이 가로길이, N이 세로길이입니다. 그리고 또한 배추의 위치 X, Y의 좌표가 주어지지요.

이 중 포문을 겉 포문을 0 ~ N-1까지, 안 포문을 0 ~ M-1까지 돌리신 것으로 보아 map[i][j]은 map[Y좌표가 i일 때][X좌표가 j일 때]를 뜻하는 것일 겁니다!

그러므로 57번째 줄에서

map[X][Y] = 1;

는  map[Y][X] = 1; 로 바뀌어야되겠지요. 우리는 map[Y좌표][X좌표]를 뜻하는 것으로 정하였기 때문이죠.

이렇기에 bfs함수의 파라미터(매개 변수)의 순서 또한 바뀌어야겠지요. BFS(int startY, int startX) 로 하고 BFS내의 변수들을 모두 수정해야할 것입니다!

그러나 일단 변수 이름이기에 일단 놔두고 다른 틀린 부분에 대하여 설명하면 32번 째 줄에서 조건문이 잘못 써져 있습니다!

현재 모든 X, Y가 잘못 써져있는 것을 수정하면, 0 <= nextY < N, 0 <= nextX < M 이 이 코드상 맞는 조건문이 되겠지요.

위 2가지를 수정하면 맞았습니다!를 받을 수 있습니다.

(약간 어렵게 설명을 해놓았지만 위 코드에서 32번 째 줄,57번 째 줄을 다음과 같이만 수정하면 맞았습니다!를 받을 수 있습니다.)

wogus4187   2년 전

하... 저 M, N 잘못써서 틀린거였네요ㅠㅠㅠㅠ 덕분에 해결했습니다. 답변해주신 모든분께 감사합니다!!

cantapia0307   2년 전

위 성급하게 댓글를 달았다가 아래 댓글을 보고 재빨리 지우고 밤새 후회하는 사람입니다.

틀린 부분도 매우 소중한 건데 제가 잠시 착각을 한것 같습니다. 구지 변명하자면  1045번 문제 때문에 이틀 동안 고민했더니 이젠 아무 생각이 없습니다. 

정신 차리고 주말에 다시 해볼 생각입니다.  그럼 불금입니다. 즐거운 주말 되시길 바랍니다.

댓글을 작성하려면 로그인해야 합니다.