๐งฉ PermMissingElem ๋ฌธ์ ํด๊ฒฐ โ
๋ฌธ์ ์ค๋ช โ
๊ธธ์ด๊ฐ N
์ธ ๋ฐฐ์ด A
์๋ 1
๋ถํฐ N+1
๊น์ง์ ์ ์ ์ค ํ๋์ ์ซ์๋ง ๋น ์ ธ ์์ต๋๋ค.
์ด ๋๋ฝ๋ ์ซ์๋ฅผ ์ฐพ์ ๋ฐํํ๋ ๋ฌธ์ ์
๋๋ค.
๋ฌธ์ ์กฐ๊ฑด โ
- ๋ฐฐ์ด
A
์ ํฌ๊ธฐ๋N
(์ฆ,N
๊ฐ์ ์ซ์๊ฐ ํฌํจ๋จ) - ๋ฐฐ์ด์๋
1
๋ถํฐN+1
๊น์ง์ ์ซ์๊ฐ ํ๋์ฉ ํฌํจ๋์ด ์์ด์ผ ํ์ง๋ง, ๋จ ํ๋์ ์ซ์๊ฐ ๋๋ฝ๋จ - ๋๋ฝ๋ ์ซ์๋ฅผ ์ฐพ์ ๋ฐํํด์ผ ํจ
์์ โ
์
๋ ฅ (A ) | ๊ธฐ๋ ์ถ๋ ฅ (๊ฒฐ๊ณผ ) |
---|---|
[2, 3, 1, 5] | 4 |
[1] | 2 |
[] | 1 |
[2, 3, 4, 5] | 1 |
[1, 2, 3, 4] | 5 |
์์ ์ค๋ช (์ฒซ ๋ฒ์งธ ์ผ์ด์ค) โ
- ์๋ ์์ด์ผ ํ ์ซ์:
[1, 2, 3, 4, 5]
- ์ค์ ๋ฐฐ์ด:
[2, 3, 1, 5]
- ๋๋ฝ๋ ์ซ์:
4
ํด๊ฒฐ ๋ฐฉ๋ฒ โ
1๋ถํฐ N+1๊น์ง์ ํฉ
์ ๊ตฌํจ- ์๋ ๋ฐฐ์ด์ ์์ด์ผ ํ ๋ชจ๋ ์ซ์์ ํฉ์ ๊ณ์ฐ (
totalSum
) - ๊ณต์:
[ \text{totalSum} = \frac{(N+1) \times (N+2)}{2} ]
- ์๋ ๋ฐฐ์ด์ ์์ด์ผ ํ ๋ชจ๋ ์ซ์์ ํฉ์ ๊ณ์ฐ (
ํ์ฌ ๋ฐฐ์ด์ ํฉ(
actualSum
)์ ๊ตฌํจ- ๋ฐฐ์ด
A
๋ด ๋ชจ๋ ์ซ์์ ํฉ ๊ณ์ฐ
- ๋ฐฐ์ด
์ฐจ์ด๋ฅผ ๋ฐํ (
totalSum - actualSum
)- ๋๋ฝ๋ ์ซ์๋
totalSum - actualSum
๊ณผ ๊ฐ์
- ๋๋ฝ๋ ์ซ์๋
์ฝ๋ ๊ตฌํ โ
typescript
function solution(A: number[]): number {
const N = A.length + 1 // ์๋ ์์ด์ผ ํ๋ ๋ฐฐ์ด ํฌ๊ธฐ
const totalSum = (N * (N + 1)) / 2 // 1๋ถํฐ N๊น์ง์ ํฉ
const actualSum = A.reduce((sum, num) => sum + num, 0) // ๋ฐฐ์ด ๋ด ์ซ์์ ํฉ
return totalSum - actualSum // ๋๋ฝ๋ ์ซ์ ๋ฐํ
}
์ฝ๋ ์ค๋ช โ
N+1
ํฌ๊ธฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๊ฐ์ ํ๊ณ ํฉ์ ๊ณ์ฐtypescriptconst N = A.length + 1 const totalSum = (N * (N + 1)) / 2
1
๋ถํฐN+1
๊น์ง์ ํฉ์ ๊ณต์์ผ๋ก ๊ณ์ฐ
ํ์ฌ ๋ฐฐ์ด์ ํฉ(
actualSum
)์ ๊ตฌํจtypescriptconst actualSum = A.reduce((sum, num) => sum + num, 0)
- ๋ฐฐ์ด์ ๋ค์ด ์๋ ์ซ์๋ค์ ํฉ์ ๊ณ์ฐ
๋๋ฝ๋ ์ซ์๋ฅผ ๋ฐํ
typescriptreturn totalSum - actualSum
- ์ ์ฒด ํฉ์์ ํ์ฌ ๋ฐฐ์ด์ ํฉ์ ๋นผ๋ฉด ๋๋ฝ๋ ์ซ์๊ฐ ๋์ด
์๊ฐ ๋ณต์ก๋ โ
O(N)
(๋ฐฐ์ด์ ํ ๋ฒ๋ง ์ํ)- ๊ธฐ์กด
sort()
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์O(N log N)
โ ๋ ๋นํจ์จ์ - ์ด ๋ฐฉ๋ฒ์ **
O(N)
**์ผ๋ก ์ต์ ํ๋์ด ๋น ๋ฆ
์คํ ์์ โ
typescript
console.log(solution([2, 3, 1, 5])) // ์ถ๋ ฅ: 4
console.log(solution([1])) // ์ถ๋ ฅ: 2
console.log(solution([])) // ์ถ๋ ฅ: 1
console.log(solution([2, 3, 4, 5])) // ์ถ๋ ฅ: 1
console.log(solution([1, 2, 3, 4])) // ์ถ๋ ฅ: 5
์ต์ข ์ ๋ฆฌ โ
โ
O(N)
์ ๋น ๋ฅธ ์ฐ์ฐ
โ
์ ๋ ฌ ์์ด ๊ณต์(N(N+1)/2
) ํ์ฉ
โ
๋๋ฝ๋ ์ซ์๋ฅผ ์ ํํ๊ฒ ์ฐพ์
์ด์ ๋๋ฝ๋ ์ซ์๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค! ๐