본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
자바스크립트 코드
class Queue {
constructor(array) {
this.queue = [...array];
this.front = 0;
this.rear = array.length;
this.sum = array.reduce((acc, cur) => acc + cur, 0);
}
enqueue(value) {
this.queue[this.rear++] = value;
this.sum += value;
}
dequeue() {
const value = this.queue[this.front];
delete this.queue[this.front];
this.front += 1;
this.sum -= value;
return value;
}
}
function solution(array1, array2) {
let answer = 0;
// Queue로 변환
const queue1 = new Queue(array1);
const queue2 = new Queue(array2);
// 탐욕법 실행
const limit = 4 * array1.length;
while(answer <= limit) {
if (queue1.sum === queue2.sum) {
break;
}
if (queue1.sum > queue2.sum) {
queue2.enqueue(queue1.dequeue());
} else if (queue1.sum < queue2.sum) {
queue1.enqueue(queue2.dequeue())
}
answer += 1;
}
return answer > limit ? -1 : answer;
}
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 자동완성 - JavaScript 풀이 (0) | 2022.09.27 |
---|---|
[프로그래머스] 배상 비용 최소화 - JavaScript 풀이 (0) | 2022.09.26 |
[프로그래머스] 프린터 - JavaScript 풀이(개선된 풀이) (0) | 2022.09.19 |
[프로그래머스] 올바른 괄호 - JavaScript 풀이(개선된 풀이) (0) | 2022.09.18 |
[프로그래머스] 땅따먹기 - JavaScript 풀이 (0) | 2022.08.29 |