๊ธฐ๋ก๋ฐฉ

BOJ_11286 : ์ ˆ๋Œ“๊ฐ’ ํž™ ๋ณธ๋ฌธ

CodingTest/Java

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

Soom_1n 2022. 11. 7. 22:52

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • n์˜ ๋ฒ”์œ„๊ฐ€ 100,000์ด๋ฏ€๋กœ O(nlogn) ์‹œ๊ฐ„ ๋ณต์žก๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž… ๋  ๋•Œ๋งˆ๋‹ค ์ ˆ๋Œ“๊ฐ’์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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));
        int n = Integer.parseInt(br.readLine());
        PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> {
           int first_abs = Math.abs(o1);
           int second_abs = Math.abs(o2);
           if (first_abs == second_abs)
               return o1 > o2 ? 1 : -1;         //์ ˆ๋Œ“๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์Œ์ˆ˜ ์šฐ์„  ์ •๋ ฌํ•˜๊ธฐ
           else
               return first_abs - second_abs;   //์ ˆ๋Œ“๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ(์Œ์ˆ˜๋ฉด ๋’ค์ชฝ์ด ํ์—์„œ ๋” ์•ž์ชฝ)
        });
        for (int i = 0; i < n; i++) {
            int order = Integer.parseInt(br.readLine());
            if (order == 0) {
                if (queue.isEmpty()) System.out.println("0");
                else System.out.println(queue.poll());
            }
            else queue.add(order);
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์ •๋ ฌ ์กฐ๊ฑด์„ ์ง์ ‘ ์ •์˜ํ•œ๋‹ค.
    • ์–‘์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด o1, ์Œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด o2์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์•„์ง„๋‹ค.
    • ์ ˆ๋Œ“๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์Œ์ˆ˜์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋” ๋†’์ธ๋‹ค.
    • ์ ˆ๋Œ“๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์ ˆ๋Œ“๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  • n๊ฐœ์˜ ์—ฐ์‚ฐ์„ ์ž…๋ ฅ๋ฐ›์•„ ์šฐ์„ ์ˆœ์œ„ ํ์— ์‚ฌ์šฉํ•œ๋‹ค.
    • 0์„ ์ž…๋ ฅ ๋ฐ›์•˜์„๋•Œ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ๋น„์—ˆ์œผ๋ฉด "0"์ถœ๋ ฅ
      • ์•„๋‹ˆ๋ฉด ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์›์†Œ ์ถœ๋ ฅ
    • 0์ด ์•„๋‹ˆ๋ฉด ๊ทธ ์ˆ˜๋ฅผ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋„ฃ์Œ

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋ณด๊ณ  ์•Œ์•„์ฑ˜์ง€๋งŒ java๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š”์ง€ ๋ง‰๋ง‰ํ–ˆ๋‹ค.
  • ์ ˆ๋Œ“๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์ง์ ‘ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งค์šฐ ์ƒ์†Œํ•ด์„œ ์ข‹์€ ๊ณต๋ถ€๊ฐ€ ๋˜์—ˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1377 : ๋ฒ„๋ธ” ์†ŒํŠธ  (0) 2022.11.08
BOJ_2750 : ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ  (0) 2022.11.08
BOJ_2164 : ์นด๋“œ2  (0) 2022.11.07
BOJ_17298 : ์˜คํฐ์ˆ˜  (0) 2022.11.07
BOJ_1874 : ์Šคํƒ ์ˆ˜์—ด  (0) 2022.11.07