728x90
큐 구조를 직접 구현하여 해결하였다.
두 큐의 합이 같으려면 두 큐의 값을 모두 더한 이후 2로 나눈 값으로 만들어주는것이 문제해결을 위한 핵심 요소이다. 큐의 값을 그때그때 구하는것도 번거로우니 큐 구조를 구현할때 sum값을 하나 넣어두어서 합계도 바로바로 꺼내올 수 있도록 구현했다.
이후, 넉넉히 검사를 진행하게 하고 큐 구조들 중에서 합이 큰 큐에서 작은 큐로 값을 전해주는 방식으로 문제를 해결하였다.
class Node {
constructor (val) {
this.val = val
this.next = null
}
}
class Queue {
constructor () {
this.front = null
this.size = 0
this.end = null
this.sum = 0
}
push (val) {
const node = new Node(val)
if (!this.size) {
this.front = node
this.end = node
} else {
this.end.next = node
this.end = node
}
this.size ++
this.sum += this.end.val
}
pop() {
if(!this.size) return undefined
const ret = this.front
this.front = this.front.next
this.size--
this.sum -= ret.val
return ret.val
}
}
function solution(queue1, queue2) {
const que1 = new Queue()
const que2 = new Queue()
for (const el of queue1) que1.push(el)
for (const el of queue2) que2.push(el)
const targetSum = (que1.sum +que2.sum)/2
let ret = 0
for (let i = 0 ; i < (que1.size+que2.size)*2 ; i++){
if (que1.sum === targetSum) return ret
if (que1.sum > que2.sum) que2.push(que1.pop())
else que1.push(que2.pop())
ret ++
}
return -1
}
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 주차요금 계산 (0) | 2023.06.08 |
---|---|
[JS] 양궁대회 (0) | 2023.06.08 |
[JS] 혼자 놀기의 달인 (0) | 2023.06.08 |
연속 부분 수열 합의 개수 (0) | 2023.06.06 |
[JS] 택배상자 (0) | 2023.06.06 |