-
이중우선순위큐Coding Test/Programmers Level 3 2022. 3. 29. 20:49
문제
https://programmers.co.kr/learn/courses/30/lessons/42628
코드
function solution(operations) { const answer = []; for(let i = 0; i < operations.length; i++){ const [command, num] = operations[i].split(' '); if(command === 'I'){ answer.push(Number(num)); answer.sort((a, b) => Number(b) - Number(a)); } if(command === 'D'){ if(num === '1') answer.shift(); else answer.pop(); } } if(answer.length === 0) return [0, 0]; return [answer[0], answer[answer.length - 1]]; }
풀이
- 각각의 연산을 수행하기 위해 operations 를 순환
- operations 는 '명령어 숫자' 배열이므로 ' '(띄어쓰기)를 기준으로 명령어와 숫자를 분리
- 명령어가 I 인 경우에는 answer 에 num 을 숫자 타입으로 바꿔서 넣어줌
- 명령어 D 는 최솟값, 최댓값을 기준으로 연산을 지시하기 때문에 answer 에 요소를 넣어준 후 내림차순 정렬
- 명령어가 D 이면서 숫자가 '1' 인 경우 최댓값(내림차순 정렬이므로 맨 앞의 값)을 제거하고, '-1' 인 경우 최솟값을 제거
- 만약 연산 결과 answer 가 비어있다면 최댓값과 최솟값이 모두 0 이므로 [0, 0] 리턴
- 그 외의 경우에는 내림차순 정렬되어 있는 answer 의 0 인덱스의 값과 마지막 인덱스의 값을 배열에 담아 리턴
'Coding Test > Programmers Level 3' 카테고리의 다른 글
베스트 앨범 (0) 2022.03.27