https://programmers.co.kr/learn/courses/30/lessons/42628
function solution(operations) {
let pq = [];
var answer = [];
for (var i = 0; i < operations.length; i++) {
let command = operations[i].split(" ")[0];
let value = parseInt(operations[i].split(" ")[1]);
if (pq.length == 0) {
switch (command) {
case 'I':
pq.push(value);
break;
case 'D':
//console.log('넘겨');
break;
}
} else {
switch (command) {
case 'I':
pq.push(value);
break;
case 'D':
if (value == 1) {
let idx = pq.indexOf(parseInt(Math.max.apply(null, pq)));
pq.splice(idx, 1);
} else if (value == -1) {
let idx = pq.indexOf(parseInt(Math.min.apply(null, pq)));
pq.splice(idx, 1);
}
}
}
}
//console.log(`pq : ${pq}`);
// let max = 0;
// let min = Infinity;
if (pq.length != 0) {
// for (var i = 0; i < pq.length; i++) {
// max < pq[i] ? max = pq[i] : max = max;
// min > pq[i] ? min = pq[i] : min = min;
// }
answer = [parseInt(Math.max.apply(null, pq)), parseInt(Math.min.apply(null, pq))];
}
else {
answer = [0,0]
}
//console.log(`max : ${max}, min : ${min}`)
return answer;
}
let operations = ["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"];
console.log(solution(operations))
생각보다 간단하게 풀리긴 했는데 조금 해맷었다.
우선 Math.max로 구하려다가 NaN이 떠서 배열을 돌면서 max,min을 구하다가 Math.max.apply가 생각나서 해당 방법을 적용하였다.
그 다음 테케가 2,6이 계속 틀려서 질문게시판을 보니 pq가 빈배열일 때 D 를 무시하는게 필요했다.( 문제에도 적혀있었다.. )
마지막으로 그래도 틀렸다나오자 뭔가 이상해 console로 다찍어보니 idx가 이상한값이 나오는걸 발견하고, 타입이 이상한건가 해서 type을 다 출력해서 확인 후 일치시키니까 통과하였다.