ALGORITHM

[JAVA] 알고리즘 : 정렬- 장난꾸러기

연듀 2022. 7. 27. 09:16


import java.util.*;

public class Main {
    public ArrayList<Integer> solution(int n, int[] arr){
        ArrayList<Integer> answer = new ArrayList<>();
        // 깊은 복사 - tmp로 복사해도 원래 값인 arr이 남아있음
        int[] tmp = arr.clone();
        Arrays.sort(tmp); // 오름차순 정렬
        for(int i=0; i<n; i++){
            if(arr[i]!=tmp[i]) answer.add(i+1);
        }

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

 

오름차순 정렬을 한 후에 기존 배열과 비교하여 값이 다른 인덱스들을 구하면 간단하게 풀 수 있다.