요르딩딩

이중우선순위 큐 (level 3) 본문

[코딩테스트]/문제풀이

이중우선순위 큐 (level 3)

요르딩딩 2022. 9. 19. 17:56
728x90
반응형

이번문제는 우선순위 큐로 풀었어야 했을거 같은데, 시간관계상 리스트를 매번 정렬하는 방식으로 풀어보았다.

 

리스트를 매번 정렬하는게 비효율 적이라 생각되어, 나중에 우선 순위 큐로 다시 한번 풀어봐야겠다.

import java.util.*;

class Solution {
	public int[] solution(String[] operations) {
		int[] answer = new int[2];

		ArrayList<Integer> list = new ArrayList<Integer>();

		for (String a : operations) {
			String[] tmp = a.split(" ");
			String cmd = tmp[0];
			int value = Integer.parseInt(String.valueOf(tmp[1]));

			if (cmd.equals("I")) {
				list.add(value);
			} else if (cmd.equals("D") && value == 1 && !list.isEmpty()) { // 가장 큰 값 삭제
				list.remove(0);
			} else if (cmd.equals("D") && value == -1 && !list.isEmpty()) { // 가장 작은 값 삭제
				list.remove(list.size() - 1);
			}

			Collections.sort(list, Collections.reverseOrder()); // 내림차순으로 정렬
		}

		if (list.isEmpty()) { // 리스트가 비었다면
			answer[0] = 0;
			answer[1] = 0;
		} else {
			answer[0] = list.get(0); // 가장 큰 값
			answer[1] = list.get(list.size() - 1); // 가장 작은 값
		}

		return answer;
	}
}
728x90
반응형
Comments