01-09 04:37
Recent Posts
Recent Comments
관리 메뉴

miinsun

[BAEKJOON] λ°±μ€€ μš°μ„ μˆœμœ„ 큐 11279 :: μ΅œλŒ€ νž™ λ³Έλ¬Έ

Algorithm/Baekjoon

[BAEKJOON] λ°±μ€€ μš°μ„ μˆœμœ„ 큐 11279 :: μ΅œλŒ€ νž™

miinsun 2022. 4. 21. 20:07

 

πŸ’¬  문제 μ„€λͺ…

널리 잘 μ•Œλ €μ§„ 자료ꡬ쑰 쀑 μ΅œλŒ€ νž™μ΄ μžˆλ‹€.
μ΅œλŒ€ νž™μ„ μ΄μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같은 연산을 μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

배열에 μžμ—°μˆ˜ xλ₯Ό λ„£λŠ”λ‹€.λ°°μ—΄μ—μ„œ κ°€μž₯ 큰 κ°’을 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€.
ν”„λ‘œκ·Έλž¨μ€ μ²˜μŒμ— λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ μ‹œμž‘ν•˜κ²Œ λœλ‹€.

 

πŸ”¨  μž…μΆœλ ₯ 예

μž…λ ₯ 

  • 첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1 ≤ N ≤ 100,000)이 주어진닀.
  • λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀.
  • λ§Œμ•½ xκ°€ μžμ—°μˆ˜λΌλ©΄ 배열에 xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0이라면 λ°°μ—΄μ—μ„œ κ°€μž₯ 큰 값을 좜λ ₯ν•˜κ³  κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•˜λŠ” κ²½μš°μ΄λ‹€.
  • μž…λ ₯λ˜λŠ” μžμ—°μˆ˜λŠ” 231보닀 μž‘λ‹€.

 

좜λ ₯

  •  μž…λ ₯μ—μ„œ 0이 주어진 회수만큼 닡을 좜λ ₯ν•œλ‹€.
  • λ§Œμ•½ 배열이 λΉ„μ–΄ μžˆλŠ” 경우인데 κ°€μž₯ 큰 값을 좜λ ₯ν•˜λΌκ³  ν•œ κ²½μš°μ—λŠ” 0을 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

예제 μž…λ ₯ 1)

13
0
1
2
0
0
3
2
1
0
0
0
0
0

 

예제 좜λ ₯ 1)

0
2
1
3
2
1
0
0

 

​

πŸ’»  Main.java

  • μš°μ„ μˆœμœ„ 큐λ₯Ό ν™œμš©ν•œλ‹€
  • ν°μˆ˜κ°€ μ•žμœΌλ‘œ μ˜€λ„λ‘ μ—­μˆœμœΌλ‘œ μ •λ ¬ν•΄μ€€λ‹€
    • Collections.reverseOrder()
/* λ°±μ€€ μš°μ„ μˆœμœ„ν - 11279 :: μ΅œλŒ€ νž™ */
import java.util.*;
import java.io.*;

public class Main {
	static ArrayList<Integer> list;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		// μš°μ„ μˆœμœ„ 큐 생성 :: μ—­μˆœμœΌλ‘œ 정리, ν°μˆ˜κ°€ μœ„λ‘œ 가도둝함
		PriorityQueue<Integer> q = new PriorityQueue <> (Collections.reverseOrder());
		
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < N; i++) {
			int x = Integer.parseInt(br.readLine());
			
			if(x == 0) {	// κ°€μž₯ 큰 수λ₯Ό 좜λ ₯
				if(q.isEmpty())
					sb.append(0).append('\n');
				else
					sb.append(q.poll()).append('\n');
			}
			else {	// 큐에 xλ₯Ό μΆ”κ°€
				q.add(x);
			}
		}
		
		System.out.println(sb);
		
		br.close();
	}
}
Comments