Q. 값을 다르게 가지고 있는 2개의 큐(Queue)를 1개의 큐(Queue)로 만드는 weave 함수(function)을 만들어라.
(단, 값을 번갈아 넣어야하며, undefined는 없어야 한다.
또한, 어떠한 array도 만들어서는 안 되며, Queue의 add, remove, peek method만 이용하여 작성해야한다)
🎈 먼저, 값이 많이 있기 때문에 반복 작업이 필요하다. 그러니 '반복문'을 먼저 떠올려야할 것이다.
그리고 undefined가 들어가면 안 되니, 값이 있는지를 확인하는 '조건문'이 있어야한다.
값이 있는지 확인하는 peek()을 반복문의 조건으로 넣을 수 있을 것이다. 값이 있다면 '반복'해야하니까.
그리고 또한 한쪽의 값이 먼저 다 소진될 수 있으니, 반복문 안에서도 값이 있는지 또 확인하는 조건문도 필요하다.
조건이 맞는다면 해당 큐에서 값을 제거한다. remove()
그리고 새로운 큐에 값을 넣어준다. add()
위처럼 간단하게 생각하고 시작하면 된다.
🔮 가장 먼저, 새로운 큐를 만들어줘야한다. const q = new Queue();
반복문의 조건은 while( srcOne.peek() || srcTwo.peek() )을 넣어 둘 중 하나의 큐에 값이 있다면 반복한다.
조건문은 if ( srcOne.peek() ) 와 if ( srcTwo.peek() )을 넣어줘서, 둘 중 하나의 큐라도 값이 있다면 실행시킨다.
if의 내부에서는 q.add( srcOne.remove() )를 통해 기존 값을 새로운 큐(q)에 넣어준다.
이렇게 반복해주면 번갈아 값을 넣는 weave algorithm이 완성된다.
Full Code
function weave(sourceOne, sourceTwo) { |
const q = new Queue(); |
while (sourceOne.peek() || sourceTwo.peek()) { |
if (sourceOne.peek()) { |
q.add(sourceOne.remove()); |
} |
if (sourceTwo.peek()) { |
q.add(sourceTwo.remove()); |
} |
} |
return q; |
} |
'JavaScript > Data Structure' 카테고리의 다른 글
[Linked List] Find the Midpoint(Linked Lists의 중간 Node 찾기) (0) | 2020.01.09 |
---|---|
[Linked List] Linked List(연결된 리스트) (0) | 2020.01.08 |
[Queue & Stack]2개의 스택(Stack)으로 큐(Queue)만들기(Queue from Stacks) (0) | 2020.01.06 |
[Stack] 스택(Stack) (0) | 2020.01.06 |
[Queue] 큐(Queue) (0) | 2020.01.04 |