자유 게시판 / Forum

반복문보다 스택을 먼저배웠다면

by yih826, 10월 17일, 01:12

반복문보다 스택을 먼저배웠다면 스택을 잘 썼을까요
반복문에 너무익숙해져서 그런지 스택을 이용한 풀이를 해보려고해도 좀처럼 떠오르지 않습니다
예제를 이해하는건 쉽지만 직접 복잡한 문제에 적용하려니 어렵습니다
처음 for문을 배웠을때 같아요..

yih826 , 10월 17일, 18:07
 감사합니다. 시험이 끝나고 여유 있을 때 열심히 고민하면서 체화하도록 노력해야겠습니다 
prof , 10월 17일, 10:16
 loop의 갯수가 정해져있으면 for loop이면 충분합니다.
그런데 문제와 같이 loop의 갯수(depth)가 변수이면
for loop으로는 안됩니다.  그래서  stack을 쓰는 겁니다.

많은 자료구조 책, 강의 youtube에서 

-  stack은 어떤거다, 이런거다, 저런거다.
-  push( ) pop( )이 있다,....
- empty( )일 때 pop( )하면 난리난다...

이딴 식의 수박겉핧기 설명  쓸모 없습니다.
진짜 Gift Ticket 같은 문제로 지가 stack에 뭔가를 넣고 뺴고 해봐야 합니다. 
stack이 몸에 "체화"가 되어야 합니다.

stack으로만 해결되는 현장 문제 100가지도 넘습니다.
이런 것은 다음 <알고리즘> part의 backtracking 에서 다시 신나게 할 겁니다.
그러려면

STL stack< T >이 일단 손에 잘 익어야 합니다. 지금 공부가 그런 거죠.
다 같은 경험이니 너무 자책 마시고.

stack 자체가 인간의 머리로는 이해하기 힘든구조죠.
우리 머리에는 스택이 없습니다. 그래서 항상 이런 말을 하죠

"어... 아까 어디까지 이야기 했지 ? "

branch point를 stack.push( point ) 안했기 때문입니다.