Sorting and Searching - 0606. 장난꾸러기
private static String solution(int[] arr) {
int c = 0, p = 0;
for(int i=arr.length-1; i>1; i--) {
if(arr[i] < arr[i - 1]) {
p = i + 1;
break;
}
}
for(int i=0; i<p; i++ ) {
if(arr[i] > arr[p-1]) {
c = i + 1;
break;
}
}
return c + " " + p;
}
public static void main(String[] args) {
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();
System.out.println(solution(arr));
}
public ArrayList<Integer> solution(int n, int[] arr){
ArrayList<Integer> answer=new ArrayList<>();
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 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+" ");
}
해당 문제는 단순 비교를 통해 풀 수 있다. 나의 풀이의 경우 학생들의 키가 담긴 배열을 순회하며
짝궁을 먼저 찾고, 다음 철수를 찾도록 구성하였다.
✔️ 짝궁과 철수 찾기 조건
Index + 1
Index + 1
강의에서는 입력된 배열을 clone()
하여 깊은 복사를 하고, Arrays.sort()
메소드를 이용해
정렬한다. 다음 입력된 배열과, 정렬된 배열을 비교하며 배열의 요소 값이 달라지는 경우를 찾는다.