[์ ๋ ฌ] 6. ์ฅ๋๊พธ๋ฌ๊ธฐ
<<ํ์ด>>
-๋์ ํ์ด-
์ด ๋ฌธ์ ๋ ์๊ฐํ๋ ๊ฑด ์ฝ์ง๋ง ๋ด๊ฐ ์ฒ์์ ๋ ์ฌ๋ฆฐ ๋ฐฉ์ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ๋น๊ตํด์ ๋ฃ๋ ๋ฐฉ๋ฒ์ ์๋ชป๋ ๋ฐฉ๋ฒ์ด์๋ค ใ ใ
ํคํฐ ์น๊ตฌ๋ ์ก์๋ด์ง๋ง ๋ค์ชฝ ์น๊ตฌ๋ ํฐ ์น๊ตฌ์ ๋ค๋ฅธ ์กฐ๊ฑด์ด๋ฏ๋ก, ์์ ์น๊ตฌ ์์ ์ด ์๋ ์ ์น๊ตฌ์ ์๋ฆฌ ์๋ฒ์ด ์ถ๋ ฅ์ด ๋๋ค.
๊ทธ๋์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒฐ๊ณผ
์ฐ์ 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 + " ");
}
}
์๋ฌด๋ฆฌ ๊ฐ๋จํด๋ ใ ใ ํญ์ ๋ฐฐ์๊ฐ๋ค ใ ใ