Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

1539. Kth Missing Positive Number (K번째 양수 누락) 본문

코딩 테스트/LeetCode

1539. Kth Missing Positive Number (K번째 양수 누락)

포카리tea 2024. 10. 7. 14:21

순증가 순서로 정렬된 양의 정수 배열 arr와 정수 k가 주어집니다.

이 배열에서 누락된 k번째 양의 정수를 반환합니다.

 

예시 1:

입력: arr = [2,3,4,7,11], k = 5
출력: 9
설명: 누락된 양의 정수는 [1,5,6,8,9,10,12,13,...]입니다. 다섯 번째 누락된 양의 정수는 9입니다.

 

예시 2:

입력: arr = [1,2,3,4], k = 2
출력: 6
설명: 누락된 양의 정수는 [5,6,7,...]입니다. 두 번째 누락된 양의 정수는 6입니다.

 

 

조건:

  • 1 <= ar.length <= 1000
  • 1 <= arr[i] <= 1000
  • 1 <= k <= 1000
  • 1 <= i < j <= arr.length에 대한 arr[i] < arr[j]

 

정답:

public class Solution {
    public int FindKthPositive(int[] arr, int k) {
        List<int> result = new List<int>();

        for (int i = 1; i <= arr[arr.Length - 1]; i++)
        {
            result.Add(i);
        }

        for (int i = 0; i < arr.Length; i++)
        {
            result.Remove(arr[i]);
        }

        if (k <= result.Count)
        {
            return result[k - 1];
        }
        else
        {
            return arr[arr.Length - 1] + k - result.Count;
        }
    }
}

해설: arr의 배열 수를 제외한 배열을 만들기 위해 arr의 최대값인 arr[arr.Length - 1]까지 result에 추가 후 arr 배열값의 수들을 제거합니다.

제거한 이후 k가 result의 남는 개수가 작거나 같다면 누락된 번호는 내부에 있다는 뜻이므로 result[ k - 1 ]를 return합니다.

만약 크다면 벗어난 것이므로 arr의 최대값에 벗어난 값만큼 더한 값을 retrun합니다.