코딩테스트

[프로그래머스] 순열 검사

keepbang 2021. 12. 6. 17:55
 

알고리즘 문제 해설 - 순열 검사

프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어

programmers.co.kr


문제 설명

길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.

1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를,
아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.

 

제한 사항

배열의 길이는 10만 이하입니다.
배열의 원소는 0 이상 10만 이하인 정수입니다.

입출력 예

arr answer
[4, 1, 3, 2] true
[4, 1, 3] false

 

입출력 예 설명

입출력 예 #1
입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다.
[4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다.

입출력 예 #2
[4, 1, 3]이 주어진 경우, 배열의 길이가 3이므로 배열에는 1부터 3까지 숫자가 모두 들어 있어야 합니다.
[4, 1, 3]에는 2가 없고 4가 있으므로 false를 반환하면 됩니다.

 


풀이

  1. 먼저 배열을 정렬합니다.
  2. 정렬된 배열의 앞에서부터 인덱스값과 비교하여 [인덱스 + 1]과 같이 않으면 false를 반환합니다.
  3. 만약 인덱스 번호화 정렬된 배열의 값이 같으면 true를 반환합니다.

 

import java.util.*;

class Solution {
    public boolean solution(int[] arr) {
        boolean answer = true;

        Arrays.sort(arr);

        for(int i = 0 ; i < arr.length ; i++) {
            if(arr[i] != i + 1) {
                return false;
            }
        }
        
        return answer;
    }
}

 

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 자릿수 더하기  (0) 2021.12.03