티스토리 뷰

// PermMissingElem

 

/**

[ 문제 ]

N 개의 다른 정수로 구성된 배열 A가 제공됩니다.

배열은 [1 .. (N + 1)] 범위의 정수를 포함합니다.

이는 정확히 하나의 요소가 누락되었음을 의미합니다.

당신의 목표는 누락 된 요소를 찾는 것입니다.

 

함수를 작성하십시오.

function solution(A);

 

배열 A가 주어지면 누락 된 요소의 값을 반환합니다.

 

[ example ]

다음과 같은 배열 A가 제공됩니다.

 

A [0] = 2

A [1] = 3

A [2] = 1

A [3] = 5

 

이 함수는 누락 된 요소 4를 반환해야합니다.

*/

 

function solution(A) {
  // write your code in JavaScript (Node.js 8.9.4)
  
  A.sort(function(a, b) {
      return a - b;
  });
  
  for(let i=0; i<A.length; i++){
      if(i+1 !== A[i]){
          return i+1
      }
  }
}

 

// 소요시간 : 8분

// 결과 : 50%

// 오류 : RUNTIME ERROR

 

function solution(A) {
  // write your code in JavaScript (Node.js 8.9.4)
  
  A.sort(function(a, b) {
      return a - b;
  });
  
  for(let i=0; i<A.length; i++){
      if(i+1 !== A[i]){
          return i+1
      }
  }
  return A.length + 1;
}

 

// 소요시간 : 2분

// 결과 : 100%

 

/**

[ 문제풀이 ]

먼저 A의 배열안의 값이 순서대로 정렬 될 수 있도록 sort 시켜준다.

이때 단순히 A.sort(); 하게되면 오름차순 순서대로 숫자가 정렬되지 않기 때문에

풀이과정처럼 오름차순 순으로 정렬할 수 있도록 sort 해준다.

 

배열의 갯수만큼 반복문을 돌다 해당 index + 1 과 배열의 값이 일치하지 않을때 값을 return 시킨다.

이렇게하면 끝난줄로만 알았는데 50점 밖에 안나와서 문제풀이 방식을 참고하니

1부터 N까지 숫자가 주어지는데 한 숫자가 빠진다 그래서 중간 수가 빠지는걸로만 생각했었는데

배열의 마지막 숫자가 빠지는 경우를 고려해주지 못했던 로직이었다.

 

그래서 마지막에 A.length+1 을 return 하도록 하는 로직을 추가했더니 문제가 완벽하게 해결 될 수 있었다.

*/

'Frontend > Algorithm' 카테고리의 다른 글

# Codility – FrogJmp  (0) 2020.08.03
댓글
공지사항