본문 바로가기
Memo/코테

[Codility] PermMissingElem

by 연로그 2021. 4. 20.
반응형

문제 

app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/

 

PermMissingElem coding task - Learn to Code - Codility

Find the missing element in a given permutation.

app.codility.com


처음에는 놀랍게도 50점 밖에 안맞았다.

정렬하고, 배열을 돌면서 인덱스 번호가 인덱스 번호+1 값이 아닌 것을 찾기.

푸는데 5분도 안걸렸을 정도로 쉽다고 생각했는데.... 깜빡한 조건이 있었다.

 

일단 50점짜리 코드를 보자.

class Solution {
    public int solution(int[] A) {
        int lengthOfA = A.length;
        int answer = 0;

        Arrays.sort(A);
        for(int i=0;i<lengthOfA;i++) {
            if(A[i]!=i+1) {
                answer = i+1;
                break;
            }
        } return answer;
    }
}

i번째 값이 i+1이 아닌 경우에는 answer에 넣고 그를 반환했다.

내가 깜빡한 부분은 'N+1 이하' 값에 대한 조건...

 

만약 if문에 걸릴 필요없이 for문을 다 돈다면?

예를 들어 {1,2} 이런 배열이 존재할 때, for문은 if조건에 걸리지 않고 끝까지 돈다.

return은 3이 되어야한다. 왜냐하면 range [1..(N + 1)] 라고 주어졌기 때문에!! N+1 값이 return 되어야하는 것이다.

 

아래가 수정한 코드다.

하나 수정하니까 바로 100점이 나온다 ㅠㅠ

class Solution {
    public int solution(int[] A) {
        int lengthOfA = A.length;
        int answer = lengthOfA+1;

        Arrays.sort(A);
        for(int i=0;i<lengthOfA;i++) {
            if(A[i]!=i+1) {
                answer = i+1;
                break;
            }
        } return answer;
    }
}

 

반응형

'Memo > 코테' 카테고리의 다른 글

[Codility] CountDiv  (0) 2021.04.22
[Codility] TapeEquilibrium  (0) 2021.04.21
정수 삼각형  (0) 2021.01.18
짝지어 제거하기  (0) 2021.01.11
튜플  (0) 2021.01.11