[알고리즘] Sorting and Searching(정렬, 이분검색과 결정알고리즘) - 장난꾸러기 (6) : (JAVA)

ho's·2022년 6월 15일
0

🎪 장난꾸러기

👕 문제


👖 풀이

⛳ 내 풀이

  • 입력값을 입력 받는다.
  • 학생들의 배열을 입력받고, 배열에 저장한다.
  • (2)에서 저장한 배열을 Arrays.sort()를 이용해 정렬한 후 처음 배열과 비교한다.
  • 값이 다른 index의 번호 +1 을 해주어 출력한다.

⛳ 강의 풀이

  • 비슷한 방법이지만, 얕은복사, 깊은복사에 대한 개념과 ArrayList를 이용해 answer를 출력하는 부분이 달랐다.

🧦 소스코드

⛳ 내 풀이

package algolecture;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Main48 {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        int[] arr = new int[input];
        int[] arr2 = new int[input];
        String answer ="";
        // 배열 입력받아 저장하는 코드
        for(int i=0;i<arr.length;i++) {
            arr[i] = sc.nextInt();
            arr2[i] = arr[i];
        }
        Arrays.sort(arr);

        for(int i=0;i<arr.length;i++){
            if(arr[i]!=arr2[i])
                answer += i+1+" ";
        }
        System.out.println(answer);
    }
}


⛳ 강의 풀이

package algolecture;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main48lec {
    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) {
        Main48lec T = new Main48lec();
        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 + " ");
    }
}
profile
그래야만 한다

0개의 댓글