avatar
Published on

Codility - Missing Integer

Author
  • avatar
    Name
    yceffort

Missing Integer

문제

주어진 배열 A에 빠져 있는 가장 작은 양의 정수를 구하시오

A=[1, 3, 6, 4, 1, 2] 이라면 답은 5
A=[1, 2, 3] 이라면 답은 4
A=[-1, -3] 이라면 답은 1

풀이

function solution(A) {
  // 배열 길이 만큼 false로 채워진 체커를 생성
  const checker = Array(A.length).fill(false)

  // A를 돌면서 양의 정수라면 해당 checker의 index를 true로 바꿔준다.
  for (let i = 0; i < A.length; i++) {
    if (A[i] > 0) {
      checker[A[i] - 1] = true
    }
  }

  // 가장 가까운 false위치를 찾는다.
  const index = checker.indexOf(false)
  // 없으면 모든 수가 다 차있는 것이므로 길이 + 1, 아니라면 해당 index + 1을 리턴한다.
  return index === -1 ? checker.length + 1 : index + 1
}

해설

문제와 관련된 해설은 아니고, indexOf는 일반적인 배열을 for

https://app.codility.com/demo/results/training8EH9VG-2JS/