코딩테스트

[정렬] 5. 중복 확인

개발하는지호 2024. 1. 18. 20:52

 

<<풀이>>

 

-나의 풀이-

 

일반 적으로 중복확인은 이중 for문이 기본이기 때문에 이중 for문을 사용했다

 

다만 조심해야할 부분은 이중 for문 안에 for문은 바깥의 파라미터의 영향을 받아야 한다.

 

바깥 for문은 int i = 0

안쪽 for문은 int j = i + 1 

 

로 시작한다.

import java.util.Scanner;

class Main {
    private char solution(int n, int[] arr) {
        for(int i = 0; i < n - 1; i++) {
            for(int j = i + 1; j < n; j++) {
                if(arr[i] == arr[j]) return 'D';
            }
        }
        return 'U';
    }


    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();
        }
        System.out.println(T.solution(n, arr));
    }
}

 

-강사님 풀이-

 

강사님은 Arrays.sort()를 활용해서 풀었다. 미리 정렬을 해놓고 for문을 돌리게 도면 굳이 이중 for문을 사용하지 않아도 된다.

그리고 아무리 스펠링 하나인 문자여도 "" 안에 들어오면 String으로 형변환이 된다.

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

class Main {
    private String solution(int n, int[] arr) {
        String answer = "U";
        Arrays.sort(arr);
        for(int i = 0; i < n - 1; i++) {
            if(arr[i] == arr[i + 1]) return "D";
        }
        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();
        }
        System.out.println(T.solution(n, arr));
    }
}