문제

햄버거 만들기 문제

노엠디엔 2023. 7. 13. 02:14

해당 문제는 아래에서 빵, 야채, 고기, 빵 순으로 되는 1,2,3,1 숫자의 연속을 찾고 정확한 순서가 되는
숫자들의 모음을 결과로 보내주면 된다.

내가 푼 코드는 위와 같이 제시된 배열의 길이만큼 for문을 돌면서 요소가 1이라면 if문의 들어가 

foo라는 변수와 plus라는 변수가 생성된다. foo는 다음 숫자가 2,3,4 라면 계속 증가될 숫자

plus 또한 계속 증가되면서 while문안에서 ingredient현재 돌고 있는 요소 인덱스에 plus 해줄 값이다.

이러면서 만약 완벽한 1,2,3,1, 을 찾는다면 원본배열을 splice 해서 해당 숫자들을 빼준다

그 후에 현재 돌고 있는 i는 0으로 만들면서 처음부터 다시 for문을 도는 건데

이렇게 되면 역시나 알고리즘 처리 문제에서 문제가 발생한다

 

힌트에서는 stack 메모리 구조와 연관 지어  문제를 해결해 보라 했다. 일단 stack은 후입선출 구조로

최신의 들어온 자료가 이전 자료 위에 있으며 삽입될 때 계속 이전 자료 위에 쌓이며 삭제될 때에도
최신 자료가 먼저 삭제되는 구조이다. 이런 방식과 연관 지어 풀라니.. 도저히 못 풀어서 코드를 봤더니

코드를 보니 드디어 이해가 되었다. stack이라는 배열을 만들어서 계속해서 ingredient요소들을 넣어준다.

그 후에 현재 stack의 배열의 길이를 계산하면서 현재 stack의 1,2,3,1 연속된 요소를 찾아

for문을 통해 현재 찾은 요소들을 pop 해준다..

참 말로는 쉬운데  코드로 풀려니 너무 어렵다;;ㅠ