node.JS
코테연습 - 햄버거 만들기
gurwhddl
2023. 2. 7. 17:19
자세한 문제는 타자치기 귀찮아서 정리해보면
[1,2,3,3,1,2,3,1,2,3]이라는 배열이 주어지면 맨 처음부터 1,2,3,1 순서로 된 것이 있는지를 찾고, 있다면 그 값을 제거해서 새로 업뎃된 배열에서 또 1,2,3,1 순서로 된게 있는지를 계속 찾아서 몇 개 있는지를 return하면 됨
생각보다 문제는 간단하게 풀렸는데 실행시간 초과가 떠서 싹다 갈아엎음...
- replace,indexOf를 쓰면 시간초과 때문에 안풀림 - 찾아보니까 모든 배열을 다 참조하는거라 그렇다고 함
- 그래서 if문으로 index+1 ~ +3까지 했는데 이것도 안풀림
- 그래서 stack문을 이용해서 한번 풀어봄
내가 생각 못했던 게 굳이 앞에서부터 계산할 필요가 없음 - 1,2,3,1이기 때문에 앞으로보나 뒤로보나 똑같음(애초에 이렇게 풀라고 숫자를 이렇게 준거같음)
forEach를 돌려서 [2,1,2,3] -> [2,1,2,3,1] 이렇게 쌓이기 때문에 뒤에서부터 계산해서 1,2,3,1이 있으면 빼버리게 되면 기존에 있던 숫자들은 그대로 남아있고 다시 새로운 숫자들이 쌓이기 때문에 굳이 반복문 안돌려도 풀 수 있는문제
대신 스택을 쌓을 배열은 forEach문 밖에다 해줘야됨(나만 헷갈렸나...)