장난꾸러기

Seungmin Lim·2022년 2월 15일
0

코딩문제연습

목록 보기
53/63

문제

나의풀이

import java.util.*;
class Main {
	public ArrayList<Integer> solution(int n,int[] arr) {
		ArrayList<Integer> answer = new ArrayList<>();
		int[] arr2 = arr.clone();//깊은복사를 하지않으면 값이 같이 바뀐다.
		Arrays.sort(arr2);
		for(int i=0; i<n;i++) {
			if(arr2[i] != arr[i]) answer.add(i+1);
		}
		return answer;
	}

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

풀이방법

arr2에는 정렬된 배열을 담아서, arr과 arr2를 비교해서 값이 다른곳의 index 값을 answer에 +1시켜 담아주면 된다!

핵심키워드

arr이 변해도 값이 변하지 않는 배열을 복사하려면 clone을 이용하면된다!
정렬을 이용하면 어려운 문제도 쉽게 풀리는경우가 있으니 문제를 풀때 잘 고려하자!

0개의 댓글