View
https://www.acmicpc.net/problem/11279
📚 문제
최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
- 배열에 자연수 x를 넣는다.
- 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.
입력에서 0이 주어진 회수만큼 답을 출력한다.
만약 배열이 비어 있는 경우인데 가장 큰 값을 출력하라고 한 경우에는 0을 출력하면 된다.
예제 입력 1 | 예제 출력 1 |
13 0 1 2 0 0 3 2 1 0 0 0 0 0 |
0 2 1 3 2 1 0 0 |
💻 코드
package algorithm;
import java.io.*;
import java.util.PriorityQueue;
public class BOJ11279 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);
for (int i = 0; i < N; i++) {
int n = Integer.parseInt(br.readLine());
if (n == 0) {
if (queue.isEmpty()) {
System.out.println(0);
} else {
System.out.println(queue.poll());
}
} else {
queue.offer(n);
}
}
}
}
💡 람다함수란?
더보기
프로그래밍 언어에서 사용되는 익명 함수를 지칭하는 용어로 함수를 하나의 식으로 표현한 것이다. 불필요한 코드를 줄이고 가독성을 높일 수 있고 함수현 인터페이스의 인스턴스를 생성하여 함수를 변수처럼 선언해주므로 메소드의 이름을 사용하지 않음
- 사용방법 : (매개변수, ...) -> {실행문}
cf)
public int sum(int a, int b) {
return a + b;
}
(a, b) -> a + b; // 람다식으로 표현
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[우선순위 큐] 백준 11286번 절댓값 힙(Java) (0) | 2022.11.20 |
---|---|
[우선순위 큐] 백준 1927번 최소 힙(Java) (0) | 2022.11.20 |
[동적 계획법] 백준 1149번 RGB거리(Java) (0) | 2022.11.16 |
reply