์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ •๋ ฌ] 6. ์žฅ๋‚œ๊พธ๋Ÿฌ๊ธฐ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 1. 19. 07:08

<<ํ’€์ด>>

 

-๋‚˜์˜ ํ’€์ด-

 

์ด ๋ฌธ์ œ๋Š” ์ƒ๊ฐํ•˜๋Š” ๊ฑด ์‰ฝ์ง€๋งŒ ๋‚ด๊ฐ€ ์ฒ˜์Œ์— ๋– ์˜ฌ๋ฆฐ ๋ฐฉ์‹ ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ๋น„๊ตํ•ด์„œ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์€ ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค ใ…‹ใ…‹

 

ํ‚คํฐ ์นœ๊ตฌ๋Š” ์žก์•„๋‚ด์ง€๋งŒ ๋’ค์ชฝ ์นœ๊ตฌ๋Š” ํฐ ์นœ๊ตฌ์™€ ๋‹ค๋ฅธ ์กฐ๊ฑด์ด๋ฏ€๋กœ, ์ž‘์€ ์นœ๊ตฌ ์ž์‹ ์ด ์•„๋‹Œ ์•ž ์นœ๊ตฌ์˜ ์ž๋ฆฌ ์ˆœ๋ฒˆ์ด ์ถœ๋ ฅ์ด ๋œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์€ ๊ฒฐ๊ณผ

 

์šฐ์„  brr ๋ฐฐ์—ด์„ arr ๋ฐฐ์—ด ํฌ๊ธฐ์™€ ๋งž๊ฒŒ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์—๋‹ค๊ฐ€ arr ๋ฐฐ์—ด์„ ๋„ฃ์—ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ, arr์„ Arrays.sort๋ฅผ ํ†ตํ•ด  ์ •๋ ฌํ•˜๊ณ  brr๊ณผ index = 0 ๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ์œ„์น˜์˜ index ๊ฐ’์„ ArrayList์— ๋„ฃ์—ˆ๋‹ค.

 

*์ฃผ์˜ ๋ฐฐ์—ด์„ ์˜ฎ๊ฒจ ์ค„๋•Œ ํ”ํžˆ int a = b ๋˜๋Š”, String a = b ๋Š” ์ด๋ ‡๊ฒŒ ์˜ฎ๊ฒจ ์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐฐ์—ด์€ arr = brr์ด ์•ˆ๋˜๊ณ  ๋‹ค์‹œ for๋ฌธ ๋Œ๋ ค์„œ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค!

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

class Main {
    private ArrayList<Integer> solution(int n, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        int[] brr = new int[n];
        for(int i = 0; i < n; i++) {
            brr[i] = arr[i];
        }
        Arrays.sort(arr);
        for(int i = 0; i < n; i++) {
            if(arr[i] != brr[i]) answer.add(i + 1);
        }
        return answer;
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }
        for(int x : T.solution(n, arr)) System.out.print(x + " ");
    }
}

 

-๊ฐ•์‚ฌ๋‹˜ ํ’€์ด-

 

์šฐ์„  ๊ฐ•์‚ฌ๋‹˜์˜ ํ’€์ด๋Š” ๋‚˜๋ž‘ ๋น„์Šทํ•˜์ง€๋งŒ !! ์—„์ฒญ ํฐ ๋‹ค๋ฅธ ์ ์ด ์žˆ์—ˆ๋”ฐ !!

 

๋ฐ”๋กœ ๋ฐฐ์—ด์˜ ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜์ธ clone() ๋ฉ”์„œ๋“œ ์ด๋‹ค. ใ…‹ใ…‹

 

์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ตณ์ด ๋‚˜์ฒ˜๋Ÿผ for๋ฌธ ๋Œ๋ ค์„œ ๋„ฃ์–ด์ค„ ํ•„์š”๊ฐ€ ์—†๊ณ  ๊ทธ๋ƒฅ 

 

int[] brr = arr.clone(); ํ•ด์ฃผ๋ฉด ๋์ด๋‚œ๋‹ค ใ…Žใ…Ž.. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด brr ๋ฐฐ์—ด์€ arr์˜ ๋ฐฐ์—ด์„ ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค !!

 

*๋งŒ์•ฝ int[] brr = new int[] ํ•ด์ฃผ๊ณ  ๋‚œ ๋’ค์— brr = arr.clone()์„ ํ–ˆ๋‹ค๋ฉด ์ž๋ฐ”์—์„œ๋Š” ๋” ์ด์ƒ ํ•„์š” ์—†์–ด์ง„ ๊ฐ์ฒด๋“ค์„ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

class Main {
    private ArrayList<Integer> solution(int n, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        int[] brr = arr.clone();
        Arrays.sort(arr);
        for(int i = 0; i < n; i++) {
            if(arr[i] != brr[i]) answer.add(i + 1);
        }
        return answer;
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }
        for(int x : T.solution(n, arr)) System.out.print(x + " ");
    }
}

 

์•„๋ฌด๋ฆฌ ๊ฐ„๋‹จํ•ด๋„ ใ…‹ใ…‹ ํ•ญ์ƒ ๋ฐฐ์›Œ๊ฐ„๋‹ค ใ…Žใ…Ž