๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 1966 ํ”„๋ฆฐํ„ฐ ํ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 20.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 1966๋ฒˆ ํ”„๋ฆฐํ„ฐ ํ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

์˜ˆ์ œ ์ž…๋ ฅ & ์ถœ๋ ฅ

ํ•ด๊ฒฐ๋ฒ•

์ฃผ์˜ ํ•ด์•ผํ•  ์ ์€ m์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.


์ด ์ ์„ ์—ผ๋‘ํ•˜๊ณ  ์ด ๋ฌธ์ œ์—์„œ๋Š” ํ๋ฅผ ์ด์šฉํ•œ๋‹ค.


์ž…๋ ฅ๋˜๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ ํ์— enqueueํ•˜๊ณ  ๋ฐ˜๋ณต์„ ๋Œ๋ฉฐ ํ•˜๋‚˜์”ฉ ๊ฒ€์ฆํ•œ๋‹ค.


ํ•œ ๋ฒˆ์˜ ๊ฒ€์ฆ์—์„œ ์ฐพ์œผ๋ ค๋Š” ๋ฌธ์„œ์˜ ์ธ๋ฑ์Šค์™€ ๋‹ค๋ฅด๋ฉด count๋ฅผ 1์”ฉ ์ฆ๊ฐ€ ์‹œํ‚ค๊ณ , ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•œ ๋ฌธ์„œ์˜ index์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด count๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ‘๊ทผ๋ฒ•

๋ฌธ์„œ์˜ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ๋ฌธ์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

class Data {
  int num; // ๋ฌธ์„œ์˜ ์ค‘์š”๋„
  int flag; // ๊ถ๊ธˆํ•œ ๋ฌธ์„œ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๋Š” flag
}

์ •๋‹ต ์ฝ”๋“œ

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int t = Integer.parseInt(br.readLine());

        while(t-- > 0) {
            String[] nm = br.readLine().split(" ");

            int n = Integer.parseInt(nm[0]);
            int m = Integer.parseInt(nm[1]);

            Queue<Data> queue = new LinkedList<>();

            String[] str = br.readLine().split((" "));
            int[] priorities = new int[n];
            for (int i = 0; i < str.length; i++) {
                priorities[i] = Integer.parseInt(str[i]);
                Data data = new Data(Integer.parseInt(str[i]), m == i);
                queue.add(data);
            }

            reverseOrder(priorities);

            int index = 0;
            while(!queue.isEmpty()) {
                Data now = queue.remove();
                int stage = priorities[index];
                if(stage == now.num) {
                    if(now.flag) {
                        bw.write(++index + "\n");
                        break;
                    }
                    ++index;
                }else {
                    queue.add(now);

                }
            }
        }

        bw.flush();
        bw.close();
    }

    private static void reverseOrder(int[] arr) {
        Arrays.sort(arr);
        int start = 0;
        int end = arr.length - 1;

        while(start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;

            start++;
            end--;
        }
    }
}

class Data {
    int num;
    boolean flag;
    Data(int num, boolean flag){
        this.num = num;
        this.flag = flag;
    }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€