NAVER

질문 백준 11729번 하노이탑 c++ 문제입니다.
비공개 조회수 461 작성일2020.01.17

하노이탑 문제인데 c++로 작성하는 중 문법적으로 제가 놓치는 지식이 있는 것 같습니다. 큐에다 몇번자리에 있는 탑(from)을 몇번 자리에 놓을지(to)를 큐에 푸쉬하여 넣는 방식으로 했구 이동한 만큼 set_Sum을 통해 ++하여 탑을 움직인 횟수를 반환하는 방식으로 구현했는데요. n값을 3으로 했을때 q.size()가 14가 나옴에도 get_queue의 for문이 7번 밖에 돌지 않구요, sum값 역시 이상하게 출력되는데 어떤점이 문제인지 알려주실 수 있나요. 
프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
아빠곰
별신 eXpert
IT/인터넷업 #프로그래머 #캠핑 C, C++ 22위, 캠핑 9위, 프로그래밍 42위 분야에서 활동
본인 입력 포함 정보
void get_queue(){ //cout << "큐 사이즈는 "<<q.size() << endl; for(int i=0;i<q.size();i++) { //cout << "for문 큐 사이즈는 " << q.size() << endl; cout << q.front()<<endl; q.pop(); } }

위 코드에 논리적 오류가 있습니다.

q.size()는 q.pop()을 할 때 마다 1씩 줄어 듭니다.

아래 처럼 수정해 보세요..

void get_queue(){ //cout << "큐 사이즈는 "<<q.size() << endl; while( q.size() > 0 ) { //cout << "for문 큐 사이즈는 " << q.size() << endl; cout << q.front()<<endl; q.pop(); } }

2020.01.17.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.