다희의 코딩 성장일기
[백준] 11286. 절대값 힙 (자바 JAVA) 본문
[ 문제 ] [백준] 11286. 절대값 힙 (자바 JAVA)
문제 링크 : https://www.acmicpc.net/problem/11286
# 접근 방법 및 풀이
- 우선순위 큐 문제다. 우선순위 큐에 원하는 기준을 통해 정렬을 해야하는데, 절대값과 원래 값을 담는 클래스를 만들어 구현했다.
- 절대값이 가장 작은 값을 뽑는 형태로 최소힙인데, 그값이 여러개 일때는 가장 작은 수를 출력해야한다.
- 문제 예제처럼 1과 -1이 있다면 둘의 절대값이 1로 같지만, -1을 출력해야한다.
- Point 클래스를 만들어 x에는 원래값, y에는 절대값을 넣었다. Comparable을 구현해 정렬했다.
# 주의할 점
- 딱히 없음
JAVA 코드
package Silver;
import java.awt.Point;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class bj11286_절대값힙 {
static class Point implements Comparable<Point>{
int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Point o) {
if(this.y == o.y)
return this.x - o.x;
return this.y-o.y;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(in.readLine());
PriorityQueue<Point> queue = new PriorityQueue<Point>();
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(in.readLine());
if(num == 0) {
if(!queue.isEmpty())
System.out.println(queue.poll().x);
else
System.out.println(0);
}else {
queue.add(new Point(num, Math.abs(num)));
}
}
}
}
REVIEW
'Algorithm > 백준 BOJ' 카테고리의 다른 글
[백준] 11899. 괄호 끼워넣기 (자바 JAVA) (0) | 2021.09.11 |
---|---|
[백준] 17298. 오큰수 (자바 JAVA) (0) | 2021.09.09 |
[백준] 1927. 최소 힙 (자바 JAVA) (0) | 2021.09.06 |
[백준] 11279. 최대 힙 (자바 JAVA) (0) | 2021.09.06 |
[백준] 16985. Maaaaaaaaaze (자바 JAVA) (0) | 2021.09.05 |
Comments