์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[ ๋ฐฑ์ค€ / BOJ 20551 ] Sort ๋งˆ์Šคํ„ฐ ๋ฐฐ์ง€ํ›ˆ์˜ ํ›„๊ณ„์ž ( JAVA / ์ž๋ฐ” )

KIMHYEYUN 2021. 10. 11. 16:02
๋ฐ˜์‘ํ˜•

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

 

20551๋ฒˆ: Sort ๋งˆ์Šคํ„ฐ ๋ฐฐ์ง€ํ›ˆ์˜ ํ›„๊ณ„์ž

์ง€ํ›ˆ์ด๋Š” Sort ๋งˆ์Šคํ„ฐ๋‹ค. ์˜ค๋žซ๋™์•ˆ Sort ๋งˆ์Šคํ„ฐ ์ž๋ฆฌ๋ฅผ ์ง€์ผœ์˜จ ์ง€ํ›ˆ์ด๋Š” ์ด์ œ ๋งˆ์Šคํ„ฐ ์ž๋ฆฌ๋ฅผ ํ›„๊ณ„์ž์—๊ฒŒ ๋ฌผ๋ ค์ฃผ๋ ค๊ณ  ํ•œ๋‹ค. ์ˆ˜๋งŽ์€ ์ œ์ž๋“ค ์ค‘์— ํ›„๊ณ„์ž๋ฅผ ๊ณ ๋ฅด๊ธฐ ์œ„ํ•ด์„œ ์ง€ํ›ˆ์ด๋Š” ์ œ์ž๋“ค์—๊ฒŒ ๋ฌธ์ œ

www.acmicpc.net

 

๋ฌธ์ œ


์ง€ํ›ˆ์ด๋Š” Sort ๋งˆ์Šคํ„ฐ๋‹ค. ์˜ค๋žซ๋™์•ˆ Sort ๋งˆ์Šคํ„ฐ ์ž๋ฆฌ๋ฅผ ์ง€์ผœ์˜จ ์ง€ํ›ˆ์ด๋Š” ์ด์ œ ๋งˆ์Šคํ„ฐ ์ž๋ฆฌ๋ฅผ ํ›„๊ณ„์ž์—๊ฒŒ ๋ฌผ๋ ค์ฃผ๋ ค๊ณ  ํ•œ๋‹ค. ์ˆ˜๋งŽ์€ ์ œ์ž๋“ค ์ค‘์— ํ›„๊ณ„์ž๋ฅผ ๊ณ ๋ฅด๊ธฐ ์œ„ํ•ด์„œ ์ง€ํ›ˆ์ด๋Š” ์ œ์ž๋“ค์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ค€๋น„ํ–ˆ๋‹ค. ๋จผ์ € ์ œ์ž๋“ค์—๊ฒŒ N๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ดA๋ฅผ ์ฃผ๊ณ , A์˜ ์›์†Œ๋“ค์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ดB๋ฅผ ๋งŒ๋“ค๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋‹ค์Œ M๊ฐœ์˜ ์งˆ๋ฌธ์„ ํ•œ๋‹ค. ๊ฐ ์งˆ๋ฌธ์—๋Š” ์ •์ˆ˜ D๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ œ์ž๋“ค์€ ์ฃผ์–ด์ง„ ์ •์ˆ˜D๊ฐ€ B์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋“ฑ์žฅํ•œ ์œ„์น˜๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ๋‹จ, D๊ฐ€ B์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” -1๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. Sort ๋งˆ์Šคํ„ฐ์˜ ์ž๋ฆฌ๋ฅผ ๋„ˆ๋ฌด๋‚˜๋„ ๋ฌผ๋ ค๋ฐ›๊ณ  ์‹ถ์€ ์ฐฝ๊ตญ์ด๋ฅผ ์œ„ํ•ด ์ง€ํ›ˆ์ด์˜ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์ฃผ์ž.

์ž…๋ ฅ


์ฒซ์งธ ์ค„์— ๋ฐฐ์—ดA์˜ ์›์†Œ์˜ ๊ฐœ์ˆ˜ N๊ณผ ์งˆ๋ฌธ์˜ ๊ฐœ์ˆ˜ M์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค.

๋‹ค์Œ ์ค„๋ถ€ํ„ฐ N์ค„์— ๊ฑธ์ณ ์ •์ˆ˜ ์ด ์ฃผ์–ด์ง„๋‹ค.

๋‹ค์Œ ์ค„๋ถ€ํ„ฐ M์ค„์— ๊ฑธ์ณ ์ •์ˆ˜ D๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ


โ€Š๊ฐœ์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ ์ฃผ์–ด์ง„ ๊ฐ€ ์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋“ฑ์žฅํ•œ ์œ„์น˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด -1๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. (๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์•ž์˜ ์›์†Œ์˜ ์œ„์น˜๋Š” 0์ด๋‹ค.)

ํ’€์ด


์ฒ˜์Œ์—๋Š” Collections.sort()์™€ LinkedList.indexOf() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ โ€ผ๏ธ

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜์˜ ์˜คํŒ๐Ÿคฆ‍โ™€๏ธ

 

Arrays.sort() ํ›„, HashMap์— ๊ฐ’๊ณผ ์ฒ˜์Œ ๋‚˜ํƒ„๋‚œ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ๋”๋‹ˆ ํ†ต๊ณผ โ€ผ๏ธ

์ฝ”๋“œ


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;

public class Main_BOJ_20551_Sort๋งˆ์Šคํ„ฐ๋ฐฐ์ง€ํ›ˆ์˜ํ›„๊ณ„์ž {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(stringTokenizer.nextToken());
        int M = Integer.parseInt(stringTokenizer.nextToken());  

        // ์‹œ๊ฐ„์ดˆ๊ณผ
        /* LinkedList<Integer> arrA = new LinkedList<>();
        for(int i = 0 ; i < N ; i++){
            arrA.add(Integer.parseInt(br.readLine()));
        }
        Collections.sort(arrA);

        while(M-- > 0){
            int x = Integer.parseInt(br.readLine());
            sb.append(arrA.indexOf(x)).append("\n");
        }

        System.out.println(sb); */

        int[] arrA = new int[N];
        for(int i = 0 ; i < N ; i++){
            arrA[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arrA);

        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0 ; i < N ; i++){
            if(!map.containsKey(arrA[i])){
                map.put(arrA[i], i);
            }
        }

        while(M-- > 0){
            int x = Integer.parseInt(br.readLine());
            if(map.containsKey(x))
                sb.append(map.get(x)).append("\n");
            else
                sb.append(-1).append("\n");
        }

        System.out.println(sb);
        
    }
}

 

728x90
๋ฐ˜์‘ํ˜•