강의로 돌아가기
서봉균

자바로 작성한 순열검사 로직입니다.

[5 2 1 4 6 6]인 경우를 생각하면서 로직을 짰는데, 적정 점수를 만족하지 못하네요.. 어떻게 손 봐야 좀 더 나은 코드가 될까요?

    public boolean solution(int[] arr) {
        boolean answer = true;
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            if (arr[i] < 1 || arr[i] > n) {
                answer = false;
                break;
            }
            for (int k = i + 1; k < n; k++) {
                if (arr[i] == arr[k]) {
                    answer = false;
                    break;
                }
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        int[] arr = new int[] { 1, 5, 3, 4, 2 };
        int[] arr2 = new int[] { 4, 1, 3 };
        AlTest a = new AlTest();
        System.out.println(a.solution(arr));
        System.out.println(a.solution(arr2));
    }
1 개의 답변
최성민

class Solution {
public boolean solution(int[] arr) {
boolean answer = false;
int length = arr.length;
int[] intArr = new int[length];
for(int i = 0; i < length ; i++) {
int value = arr[i];
if( value > length || intArr[value - 1] != 0) {
return answer;
} else {

            intArr[value - 1] = value;
        }
    }

    answer = true;
    return answer;
}

}

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.