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+" ");
}
}
오름차순 정렬을 한 후에 기존 배열과 비교하여 값이 다른 인덱스들을 구하면 간단하게 풀 수 있다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 2098번- 상수 (0) | 2022.07.27 |
---|---|
[JAVA] 알고리즘 : 정렬- 좌표 정렬(compareTo) (0) | 2022.07.27 |
[JAVA] 백준 1152번- 단어의 개수 (0) | 2022.07.26 |
[JAVA] 알고리즘 : 정렬- 중복 확인 (0) | 2022.07.26 |
[JAVA] 알고리즘 : 정렬- LRU(캐시, 카카오변형) (0) | 2022.07.26 |