Algorithm/BOJ

[Boj_11286] ์ ˆ๋Œ“๊ฐ’ ํž™

jeong_ii 2023. 11. 13. 22:22

๐Ÿ“Ž ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/11286

 

11286๋ฒˆ: ์ ˆ๋Œ“๊ฐ’ ํž™

์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜ N(1≤N≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ x๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋งŒ์•ฝ x๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐฐ์—ด์— x๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”(์ถ”๊ฐ€ํ•˜๋Š”) ์—ฐ์‚ฐ์ด๊ณ , x๊ฐ€ 0

www.acmicpc.net

 

โ–ธ ๋ฌธ์ œ

์ ˆ๋Œ“๊ฐ’ ํž™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

  1. ๋ฐฐ์—ด์— ์ •์ˆ˜ x (x ≠ 0)๋ฅผ ๋„ฃ๋Š”๋‹ค.
  2. ๋ฐฐ์—ด์—์„œ ์ ˆ๋Œ“๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•œ๋‹ค. ์ ˆ๋Œ“๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๋•Œ๋Š”, ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์€ ์ฒ˜์Œ์— ๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 

โ–ธ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ x๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋งŒ์•ฝ x๊ฐ€ ์ž์—ฐ์ˆ˜๋ผ๋ฉด ๋ฐฐ์—ด์— x๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”(์ถ”๊ฐ€ํ•˜๋Š”) ์—ฐ์‚ฐ์ด๊ณ , x๊ฐ€ 0์ด๋ผ๋ฉด ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  ๊ทธ ๊ฐ’์„ ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ž…๋ ฅ๋˜๋Š” ์ž์—ฐ์ˆ˜๋Š” 231๋ณด๋‹ค ์ž‘๋‹ค.

 

โ–ธ ์ถœ๋ ฅ

์ž…๋ ฅ์—์„œ 0์ด ์ฃผ์–ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฐฐ์—ด์ด ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์ธ๋ฐ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ•œ ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด

  • ๐Ÿฅˆ ๋ฌธ์ œ ๋ ˆ๋ฒจ : ์‹ค๋ฒ„ 1
  • ๐Ÿ””  ๋ฌธ์ œ ์œ ํ˜• : ์ž๋ฃŒ๊ตฌ์กฐ, ์šฐ์„ ์ˆœ์œ„ ํ
  • ๐Ÿ’ฌ  ํ’€์ด ์–ธ์–ด : JAVA

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

  • ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ์ ˆ๋Œ“๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ƒˆ๋กœ ์ •์˜ํ•ด ์ฃผ์—ˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์ •๋ ฌ ๊ธฐ์ค€
    • ๋‘ ์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
    • ๋‘ ์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ์ž…๋ ฅ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

 

โœ” ์ตœ์ข… ์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ : 28800KB
์‹œ๊ฐ„ : 424ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());
        PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> {
            // x, y์˜ ๋น„๊ต ์šฐ์„ ์ˆœ์œ„ ๊ฒฐ์ •
            // x, y์˜ ์ ˆ๋Œ“๊ฐ’
            int abs1 = Math.abs(x);
            int abs2 = Math.abs(y);

            if (abs1 > abs2) { // ์ ˆ๋Œ“๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์•ž ๊ฐ’์ด ๋” ํฌ๋‹ค๋ฉด ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ
                return abs1 - abs2;
            } else if (abs1 == abs2) { // ์ ˆ๋Œ“๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์Œ์ˆ˜ ์•ž์œผ๋กœ ๋ณด๋‚ด๊ธฐ
                return x - y;
            }
            return -1;
        });
        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(br.readLine());

            if (num == 0) { // ๋“ค์–ด์˜ค๋Š” ๊ฐ’์ด 0์ด๋ผ๋ฉด
                if (pq.isEmpty()) { // ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด
                    sb.append(0).append("\n"); // 0 ์ถœ๋ ฅ
                } else { // ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์ถœ๋ ฅํ•˜๊ณ  ๊ทธ ๊ฐ’ ์ œ๊ฑฐ
                    sb.append(pq.poll()).append("\n");
                }
            } else { // ๋“ค์–ด์˜ค๋Š” ๊ฐ’์ด 0์ด ์•„๋‹ˆ๋ผ๋ฉด
                pq.offer(num); // ๋ฐฐ์—ด์— ๊ฐ’ ์ถ”๊ฐ€
            }
        }
        System.out.println(sb.toString());
    }
}


 

 

๐Ÿ“ ํ•จ๊ป˜ ํ’€์–ด๋ณด๋ฉด ์ข‹์€ ๋ฐฑ์ค€ ๋ฌธ์ œ