728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
//최소값 기준 우선순위 큐
PriorityQueue<Integer> minQ = new PriorityQueue<>();
//최대값 기준 우선순위 큐
PriorityQueue<Integer> maxQ = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < operations.length; i++) {
String[] s = operations[i].split(" ");
if (s[0].equals("I")) { //만약 I면 minQ와 maxQ에 각각 숫자 추가
int num = Integer.parseInt(s[1]);
minQ.add(num);
maxQ.add(num);
} else { //만약 D면
if (s[1].equals("1")) { //1일 경우에는 최대값에서 값 지우고
maxQ.poll();
} else { //그렇지 않을 경우에는 최소값에서 값 지우기
minQ.poll();
}
//만약 minQ나 maxQ에 지울 것이 없거나, minQ의 첫번째 값이 maxQ의 첫번째 값보다 클 경우
if (minQ.size() == 0 || maxQ.size() == 0 || minQ.peek() > maxQ.peek()) {
//minQ, maxQ 리셋
minQ = new PriorityQueue<>();
maxQ = new PriorityQueue<>(Collections.reverseOrder());
}
}
}
//minQ와 maxQ가 비어있다면 0, 0 리턴, 그렇지 않으면 각 최대값, 최소값 리턴
return minQ.size() == 0 || maxQ.size() == 0 ? new int[]{0, 0} : new int[]{maxQ.peek(), minQ.peek()};
}
}
테스트 1 〉 | 통과 (0.44ms, 74.7MB) |
테스트 2 〉 | 통과 (0.44ms, 72.9MB) |
테스트 3 〉 | 통과 (0.47ms, 76.5MB) |
테스트 4 〉 | 통과 (0.42ms, 75.8MB) |
테스트 5 〉 | 통과 (0.45ms, 76MB) |
테스트 6 〉 | 통과 (0.47ms, 70.5MB) |
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 - H-Index (2단계) (0) | 2022.07.21 |
---|---|
[JavaScript] 프로그래머스 - 이중우선순위큐 (3단계) (0) | 2022.07.20 |
[JavaScript] 프로그래머스 - 다리를 지나는 트럭 (2단계) (0) | 2022.07.19 |
[Java] 프로그래머스 - 다리를 지나는 트럭 (2단계) (0) | 2022.07.19 |
[JavaScript] 프로그래머스 - 위장 (2단계) (0) | 2022.07.15 |