반응형
문제 설명
값 입력, 최댓값 삭제 최소값 삭제의 명령어들을 배열로 받아서 명령어를 실행하고 최종 배열의 길이가 0이면
[0,0]을 반환 아니면 [최대값, 최소값]을 반환하는 문제다.
q에 있는 원소를 우선순위에 맞게 저장하는게 관건이다.
만일 배열이 [3,3,1]이고 새로운 원소 4가 우선순위 큐에 들어간다고 했을 때 [4,3,3,1]이 되어야 한다.
JS에 splice라는 array method를 이용하면 쉽게 배열에 원소를 추가할 수 있다.
코드 흐름
명령문 순회
명령어에 따라 처리
만일 입력이면 우선순위 큐에 새로운 원소를 우선순위를 고려하여 삽입
삭제라면 큐에서 최대값 또는 최소값 삭제
모든 명령문이 끝나고 정답 반환
function solution(operations) {
var answer = [];
let arr = []
for( let operation of operations) {
const splited = operation.split(' ');
const instrcution = splited[0];
const num = Number(splited[1]);
if( instrcution === 'I') {
const length = arr.length;
for(let i = 0; i < length; i++){
if( num >= arr[i]) {
arr.splice(i, 0, num);
break;
}
}
if( length === arr.length ) arr.push(num);
} else if ( instrcution === 'D' ) {
if( num === -1) arr.pop();
else arr.shift();
}
}
answer = arr.length ? [ arr[0], arr[arr.length-1] ] : [0, 0];
return answer;
}