|
| 1 | +class Solution: |
| 2 | + def twoSum(self, nums: list[int], target: int) -> list[int]: |
| 3 | + num_to_index = {} |
| 4 | + |
| 5 | + for i, num in enumerate(nums): |
| 6 | + diff = target - num |
| 7 | + |
| 8 | + if diff in num_to_index: |
| 9 | + j = num_to_index[diff] |
| 10 | + return [i, j] |
| 11 | + |
| 12 | + num_to_index[num] = i |
| 13 | + |
| 14 | +""" |
| 15 | +================================================================================ |
| 16 | +νμ΄ κ³Όμ |
| 17 | +================================================================================ |
| 18 | +
|
| 19 | +[1μ°¨ μλ] Brute Force - O(n^2) |
| 20 | +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| 21 | +1. λ¨μ λ°λ³΅μΌλ‘ κ·Έλ₯ λ¬Έμ λ₯Ό νμ΄λ³΄μ. |
| 22 | +2. λ¨ κ°μ μ«μμΌ κ²½μ°μλ λμ΄κ°μ. |
| 23 | +
|
| 24 | + for i in range(len(nums)): |
| 25 | + for j in range(len(nums)): |
| 26 | + if i == j: |
| 27 | + continue |
| 28 | + if nums[i] + nums[j] == target: |
| 29 | + return [i, j] |
| 30 | +
|
| 31 | +3. O(n^2) μΌλ‘ λ¬Έμ λ₯Ό νμλλ° |
| 32 | +4. μκ°μ΄ μ€λ걸리λκΉ λ€λ₯Έ νμ΄ λ°©λ²μ΄ μλ κ² κ°μ |
| 33 | +
|
| 34 | +
|
| 35 | +[2μ°¨ μλ] Hash Table - Two Pass |
| 36 | +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| 37 | +5. ν΄μ±μΌλ‘ λ¬Έμ λ₯Ό ν λ°©λ²μ΄ μμΌλ €λ? |
| 38 | +6. λλ²λ§λ€ μΈλ±μ€λ₯Ό μ μ₯νκ³ |
| 39 | +7. targetμμ νμ¬ κ°μ§ κ°μ λΊ κ°μ΄ numsμ μλμ§λ₯Ό νλ¨νλ©΄ λ κ² κ°μλ°? |
| 40 | +8. κ·Έλ¦¬κ³ νμ¬ κ°μ§ κ°κ³Ό λΊ κ°μ μΈλ±μ€λ₯Ό κ·Έλλ‘ λ°ννλ©΄ λ κ² κ°κ³ |
| 41 | +9. κ·Όλ° λμΌν μΈλ±μ€λ μ μΈν΄μΌν λ― |
| 42 | +
|
| 43 | + num_index_dict = defaultdict() |
| 44 | + for index, num in enumerate(nums): |
| 45 | + num_index_dict[num]=index |
| 46 | + print(num_index_dict) |
| 47 | +
|
| 48 | + for index, num in enumerate(nums): |
| 49 | + if (target - num) in nums and num_index_dict[target - num] != index: |
| 50 | + return [index, num_index_dict[target-num]] |
| 51 | +
|
| 52 | +
|
| 53 | +[3μ°¨ μλ] Hash Table - One Pass |
| 54 | +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| 55 | +10. λ¨ ν λ²μ 루νμμλ λμμν¬ μ μμλ―? |
| 56 | +
|
| 57 | + num_index_dict = defaultdict() |
| 58 | +
|
| 59 | + for index, num in enumerate(nums): |
| 60 | + if (target - num) in num_index_dict: |
| 61 | + return [index, num_index_dict[target - num]] |
| 62 | +
|
| 63 | + num_index_dict[num] = index |
| 64 | +
|
| 65 | +
|
| 66 | +[μ΅μ’
κ°μ ] μ½λ κ°λ
μ± ν₯μ |
| 67 | +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| 68 | +11. μλκ° λ§μ΄ λΉ¨λΌμ‘λ€. μ½λ κ°λ
μ±λ§ λμ¬λ³΄μ |
| 69 | +
|
| 70 | + num_to_index = {} |
| 71 | + |
| 72 | + for i, num in enumerate(nums): |
| 73 | + diff = target - num |
| 74 | +
|
| 75 | + if diff in num_to_index: |
| 76 | + j = num_to_index[diff] |
| 77 | + return [i, j] |
| 78 | + |
| 79 | + num_to_index[num] = i |
| 80 | +""" |
0 commit comments