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

한유태님의 프로필 이미지
한유태

작성한 질문수

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

3-I

3-I 추가 질문있습니다 :)

해결된 질문

작성

·

141

0

안녕하세요 선생님 🙂

선생님 풀이의 설계를 공부한 후에 구현을 해봤는데요, 이해가 되지 않는 부분이 하나있어서 질문 드립니다.

int qSize = q.size()로 하신 후에 for문 안에 범위를 변수로 qSize로 해주셨는데요, 변수를 만들지 않고 for문안에 범위를 q.size()로 해도 같을거라 생각했지만 결과 값이 다르게 나옵니다. 이유가 뭔지 궁금합니다!!

http://boj.kr/44da77cfb1f148c0b2a030fe592933e9

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

int qSize = q.size()로 하신 후에 for문 안에 범위를 변수로 qSize로 해주셨는데요, 

이렇게 해야 먼저 쌓은 queue를 기반으로 레벨링을 할 수 있습니다.

		for (int i = 0; i < q.size(); i++)

이렇게 되버리면 queue에 push가 계속일어나 -> size증가해서 레벨링이 안됩니다.

 

왜 레벨링일까요?

image수빈이가 3가지의 경우의 수를 실행 -> 해당 레벨에서 동생 찾을 수 있는지 확인해야하는 로직이 필요합니다.

 

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


한유태님의 프로필 이미지
한유태
질문자

아.. 선생님 덕분에 깨달았습니다 ㅠㅠ qSize랑 q.size() 디버그해보니 바로 찍히네요 감사합니다!!

0

한유태님의 프로필 이미지
한유태
질문자

혹시 큐의 크기를 변수로 선언하지 않으면 첫번째 큐의 크기여서 안되는걸까요?

한유태님의 프로필 이미지
한유태

작성한 질문수

질문하기