1. Two Sum (LeetCode) โ
๐ ๋ฌธ์ ๋งํฌ โ LeetCode 1. Two Sum
๋ฌธ์ ์ค๋ช โ
์ฃผ์ด์ง ์ ์ ๋ฐฐ์ด nums
์ ์ ์ target
์ด ์์ต๋๋ค. ๋ฐฐ์ด ๋ด์์ ๋ ์๋ฅผ ์ ํํ์ฌ ๋ํ์ ๋, ๊ทธ ํฉ์ด target
์ด ๋๋ ๋ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์
๋๋ค. ๊ฐ ์
๋ ฅ๊ฐ์ ์ ํํ ํ๋์ ํด๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ์ ์์๋ฅผ ๋ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐํํ๋ ์ธ๋ฑ์ค๋ ์์์ ์๊ด ์์ต๋๋ค.
์ ๋ ฅ โ
- ์ ์ ๋ฐฐ์ด
nums
, ๊ธธ์ด n (2 <= n <= 10โด) - ์ ์
target
์ถ๋ ฅ โ
- ๋ ์ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ด์ ๋ฐฐ์ด
๐ก ๋ฌธ์ ํด๊ฒฐ ์ ๋ต โ
- Brute Force (์์ ํ์) ๋ฐฉ๋ฒ์ ๋ชจ๋ ์์ ๊ฒ์ฌํ์ฌ
target
๊ณผ ์ผ์นํ๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๊ฐ ๋ณต์ก๋๋ O(nยฒ)์ผ๋ก ๋นํจ์จ์ ์ ๋๋ค. - ํด์๋งต (Hash Map) ์ ์ด์ฉํ์ฌ, ๊ฐ ์ซ์์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ฉด์ ํ์ฌ ์ซ์์ ๋ณด์๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ๋ฒ์ O(n)์ ์๊ฐ ๋ณต์ก๋๋ก ํจ์จ์ ์ ๋๋ค.
๋ณธ ํ์ด์์๋ Hash Map์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ ์ฉํฉ๋๋ค.
TypeScript ํ์ด ์ฝ๋ โ
typescript
function twoSum(nums: number[], target: number): number[] {
const map = new Map<number, number>()
for (let i = 0; i < nums.length; i++) {
const complement = target - nums[i]
if (map.has(complement)) {
return [map.get(complement)!, i]
}
map.set(nums[i], i)
}
throw new Error('No solution found')
}
๐ ๏ธ ์ฝ๋ ๋์ ์๋ฆฌ โ
- ๋น Hash Map ์์ฑ: ์ซ์ ๊ฐ์ key, ์ธ๋ฑ์ค๋ฅผ value๋ก ์ ์ฅํ
map
์ ์ด๊ธฐํํฉ๋๋ค. - ๋ฐฐ์ด ์ํ:
nums
๋ฐฐ์ด์ ์ํํ๋ฉด์ ๋ค์์ ์ํํฉ๋๋ค:- ํ์ฌ ์ซ์์ ๋ณด์(
target - nums[i]
)๋ฅผ ๊ณ์ฐ - ๋ณด์๊ฐ
map
์ ์กด์ฌํ๋์ง ํ์ธ- ์กด์ฌํ๋ฉด ์ ๋ต ์ธ๋ฑ์ค ๋ฐํ
- ์กด์ฌํ์ง ์์ผ๋ฉด ํ์ฌ ์ซ์์ ์ธ๋ฑ์ค๋ฅผ
map
์ ์ ์ฅ
- ํ์ฌ ์ซ์์ ๋ณด์(
- ๋ฐ๋ณต ์ข ๋ฃ ํ: ๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋์ ํ๋์ ์ ๋ต์ด ์กด์ฌํ๋ฏ๋ก, ๋ฃจํ ๋ด์์ ๋ฐํ๋์ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. (๋ค๋ง, ์์ ์ฑ์ ์ํด ์๋ฌ ์ฒ๋ฆฌ ์ถ๊ฐ)
๐ ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์ โ
๊ตฌ๋ถ | ๋ณต์ก๋ | ์ค๋ช |
---|---|---|
์๊ฐ ๋ณต์ก๋ | O(n) | ๋ฐฐ์ด์ ํ ๋ฒ ์ํํ๋ฉฐ, ๊ฐ ์์์ ๋ํด O(1) ์ฐ์ฐ ์ํ |
๊ณต๊ฐ ๋ณต์ก๋ | O(n) | Hash Map์ ์ต๋ n๊ฐ์ ์์ ์ ์ฅ |
๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ๊ณผ ํจ์จ์ฑ ๋น๊ต โ
- Brute Force ๋ฐฉ๋ฒ: ์ด์ค for๋ฌธ์ผ๋ก ๋ชจ๋ ์์ ๊ฒ์ฌ โ ์๊ฐ ๋ณต์ก๋ O(nยฒ), ๊ณต๊ฐ ๋ณต์ก๋ O(1)
- ์ ๋ ฌ ํ ํฌ ํฌ์ธํฐ: ์ ๋ ฌ์ด ํ์ํ๋, ์ธ๋ฑ์ค ๋ฐํ ์กฐ๊ฑด ๋๋ฌธ์ ๋ถ์ ์ (์ธ๋ฑ์ค ์์น ์์ค๋จ)
- Hash Map ๋ฐฉ๋ฒ (ํ์ฌ ๋ฐฉ๋ฒ): O(n) ์๊ฐ๊ณผ ๊ณต๊ฐ์ผ๋ก ๊ฐ์ฅ ํจ์จ์
๐ ์์ ์ ๋ฆฌ โ
- Hash Map์ ์ด์ฉํด ๋ณด์๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๋ ๋ฐฉ๋ฒ์ด ํต์ฌ
- ์๊ฐ ๋ณต์ก๋ O(n), ๊ณต๊ฐ ๋ณต์ก๋ O(n)
- ์ ๋ ฌ ๋ฐฉ์์ ์ธ๋ฑ์ค๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋ถ์ ํฉ
- ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ Hash Map ํ์ฉ๋ฒ