코딩 테스트/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합니다.