gkgkehdrms   2년 전

안녕하세요 아래 코드를 써서 문제는 통과했습니다.

그런데 풀다 보니 궁금증이 생겨서요

BFS 함수에서 큐를 선언하고 81번 줄에서 Ini_q 함수를 써서 큐를 초기화합니다.

여기서 10001개의 요소를 선언하였는데, 원형 큐를 사용한다면 100개만 선언해도 괜찮지 않나요?

Enque, Deque 함수에서 원형 큐가 되도록 작성했고, 맨 처음 코드에서는 큐의 최대치를 100개만 썼는데

답이 들렸다고 나왔습니다.


10000개가 된다는 말은 시작점부터 미로 배열 모든 요소에 접근이 가능한지 체크해야 한다는건데,

미로는 사실 인접한 요소만 만나게 되고 그렇기 때문에 아무리 많이 들어가도 큐에 100개만 들어갈 것이라고 생각해야 맞지 않나 해서요

실제로 100*100 크기의 미로에, 모든 요소에 1을 넣은 케이스에서 문제없이 돌아가는 걸 확인했습니다.

어떤 반례가 있기 떄문에 큐의 최대 크기를 10000개로 해야 하는지 고수님들 조언 좀 부탁드립니다.

palilo   2년 전

size 200개로 제출하니까 맞았네요.

제 생각엔 200개가 최대일 것 같아요.

아래처럼 맵이 생겼다면 외길을 따라 맵의 정 중앙으로 간 뒤에 마름모꼴로 사방으로 퍼지겠죠?

그럼 큐의 최대 크기는 마름모의 최대 둘레와 같고, 마름모의 한 변의 길이는 최대 50이니까 200이겠네요.


제출하신 코드에 이 테스트 케이스 넣으니까 큐의 최대 크기는 196이 나오더라구요

jh05013   2년 전

큐가 200보다 길어지는 데이터를 만들 수 있습니다.

https://www.acmicpc.net/board/...

위 데이터도 최악의 경우는 아니고, 이처럼 큐가 얼마나 길어질 지 예측하는 것은 어렵기 때문에 그냥 칸의 전체 개수로 잡는 것이 가장 안전합니다.

djm03178   2년 전

1000보다 길어지는 데이터가 올라왔습니다.

https://www.acmicpc.net/board/...

gkgkehdrms   2년 전

일요일에 못 들어왔는데 ㅋㅋㅋ 고수님들의 실력은 정말 대단하네요...

제가 상상도 못 한 데이터를 이렇게 갖고와주실 줄은... 가장 안전하게 하기 위해 앞으론 n×n size큐를 만들어야겠습니다 ㅋㅋㅋㅋㅋㅋ

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