질문
백준 11729번 하노이탑 c++ 문제입니다.
비공개
조회수 461
작성일2020.01.17
하노이탑 문제인데 c++로 작성하는 중 문법적으로 제가 놓치는 지식이 있는 것 같습니다. 큐에다 몇번자리에 있는 탑(from)을 몇번 자리에 놓을지(to)를 큐에 푸쉬하여 넣는 방식으로 했구 이동한 만큼 set_Sum을 통해 ++하여 탑을 움직인 횟수를 반환하는 방식으로 구현했는데요. n값을 3으로 했을때 q.size()가 14가 나옴에도 get_queue의 for문이 7번 밖에 돌지 않구요, sum값 역시 이상하게 출력되는데 어떤점이 문제인지 알려주실 수 있나요.
답변자님,
정보를 공유해 주세요.
1번째 답변
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이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
최근 공지사항이 없습니다.