Skip to content

Commit 3bc68f1

Browse files
committed
11주차 문제 풀이
1 parent 0f5b3d3 commit 3bc68f1

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

missing-number/leehyeyun.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
/*
6+
문제명: Missing Number (LeetCode 268)
7+
8+
문제 설명:
9+
길이가 n인 배열 nums가 주어진다.
10+
이 배열에는 0부터 n까지의 숫자 중에서
11+
정확히 하나를 제외한 n개의 숫자가 들어 있다.
12+
(즉, 원래는 n+1개의 숫자가 있어야 함)
13+
14+
목표:
15+
0부터 n까지의 범위 안에서
16+
배열 nums에 존재하지 않는 "단 하나의 숫자"를 찾아 반환한다.
17+
18+
입력 조건:
19+
- nums.length == n
20+
- 1 <= n <= 10^4
21+
- nums[i]는 0 이상 n 이하의 정수
22+
- nums 안의 모든 값은 서로 다르다 (중복 없음)
23+
24+
출력:
25+
- nums 배열에 없는 숫자 1개를 반환
26+
27+
핵심 포인트:
28+
- 정상 상태라면 숫자 범위는 [0, n] (총 n+1개)
29+
- 실제 배열에는 n개만 존재 → 반드시 하나는 빠져 있음
30+
- 배열은 정렬되어 있지 않음
31+
32+
예시 1:
33+
입력: nums = [3, 0, 1]
34+
해석:
35+
n = 3
36+
정상 범위: [0, 1, 2, 3]
37+
빠진 숫자: 2
38+
출력: 2
39+
40+
예시 2:
41+
입력: nums = [0, 1]
42+
해석:
43+
n = 2
44+
정상 범위: [0, 1, 2]
45+
빠진 숫자: 2
46+
출력: 2
47+
48+
예시 3:
49+
입력: nums = [9,6,4,2,3,5,7,0,1]
50+
해석:
51+
n = 9
52+
정상 범위: [0, 1, 2, ..., 9]
53+
빠진 숫자: 8
54+
출력: 8
55+
56+
추가 요구사항 (Follow up):
57+
- 시간 복잡도: O(n)
58+
→ 배열을 한 번만 순회해야 함
59+
- 공간 복잡도: O(1)
60+
→ 추가 배열, 해시맵 등 사용 불가
61+
62+
문제 의도:
63+
- 단순 탐색이 아니라
64+
"전체 범위의 성질"을 이용해
65+
빠진 숫자를 찾아낼 수 있는지 확인
66+
- 수학적 사고 또는 비트 연산적 사고를 요구하는 문제
67+
*/
68+
var missingNumber = function(nums) {
69+
const n = nums.length;
70+
71+
const expectedSum = (n * (n + 1)) / 2;
72+
73+
let actualSum = 0;
74+
for (let i = 0; i < n; i++) {
75+
actualSum += nums[i];
76+
}
77+
78+
return expectedSum - actualSum;
79+
};
80+
81+
console.log(missingNumber([3, 0, 1]))
82+
console.log(missingNumber([0, 1]))
83+
console.log(missingNumber([9,6,4,2,3,5,7,0,1]))
84+

0 commit comments

Comments
 (0)