|
| 1 | +"""TC: O(1), SC: O(n^2) |
| 2 | +
|
| 3 | +-n <= a, b <= n κ°μ . |
| 4 | +λ¬Έμ μμλ nμ΄ 1000μΌλ‘ μ£Όμ΄μ Έμλ€κ³ λ³Ό μ μλ€. |
| 5 | +
|
| 6 | +μμ΄λμ΄: |
| 7 | +λ§μ
μ λͺ» μ°κ² νλ€λ©΄ μ μ²λ¦¬λ₯Ό ν΅ν΄ λͺ¨λ a, b μ‘°ν©μ λν λ§μ
κ°μ λ§λ€μ΄λκ³ a, bμ κ°μ λ°λΌμ |
| 8 | +νμν κ°μ μΆλ ₯νλλ‘ νμ. pythonμμλ μμλ‘ λ μΈλ±μ€λ₯Ό μ§μνλ―λ‘ μ΄λ₯Ό νμ©νμ. |
| 9 | +
|
| 10 | +- μλμ μ½λλ₯Ό ν΅ν΄μ μ μ²λ¦¬λ κ°μ μ€λΉνλ€. μ΄ μ½λλ leetcodeμμ μ€νλμ§ μμΌλ―λ‘ λνκΈ°λ₯Ό |
| 11 | + μ¨λ μκ΄ μλ€. |
| 12 | +```py |
| 13 | +n = 3 |
| 14 | +with open("foo.txt", "w") as f: |
| 15 | + a = [ |
| 16 | + [ |
| 17 | + (i if i <= n else i - 2 * n - 1) + (j if j <= n else j - 2 * n - 1) |
| 18 | + for j in range(0, 2 * n + 1) |
| 19 | + ] |
| 20 | + for i in range(0, 2 * n + 1) |
| 21 | + ] |
| 22 | + f.write(str(a)) |
| 23 | +``` |
| 24 | +
|
| 25 | +SC: |
| 26 | +- O(n^2). μ ννλ, (2*n+1)^2 κ°μ μ μλ₯Ό λ°°μ΄μ μ μ₯νλ€. |
| 27 | +
|
| 28 | +TC: |
| 29 | +- μΈλ±μ€λ₯Ό ν΅ν΄ λ°λ‘ μ κ·Ό. O(1). |
| 30 | +""" |
| 31 | + |
| 32 | + |
| 33 | +class Solution: |
| 34 | + # n = 3μΌλ μμ. |
| 35 | + def getSum(self, a: int, b: int) -> int: |
| 36 | + x = [ |
| 37 | + [0, 1, 2, 3, -3, -2, -1], |
| 38 | + [1, 2, 3, 4, -2, -1, 0], |
| 39 | + [2, 3, 4, 5, -1, 0, 1], |
| 40 | + [3, 4, 5, 6, 0, 1, 2], |
| 41 | + [-3, -2, -1, 0, -6, -5, -4], |
| 42 | + [-2, -1, 0, 1, -5, -4, -3], |
| 43 | + [-1, 0, 1, 2, -4, -3, -2], |
| 44 | + ] |
| 45 | + return x[a][b] |
| 46 | + |
| 47 | + |
| 48 | +# λ¨, n = 1000μΌλ μ΄λ° μμΌλ‘ μ½λλ₯Ό μ§λ €κ³ νλ©΄ |
| 49 | +# `For performance reasons, the number of characters per line is limited to 10,000.` |
| 50 | +# νλ 문ꡬμ ν¨κ» 리μ€νΈλ₯Ό 볡λΆν μκ° μλ€... |
| 51 | + |
| 52 | + |
| 53 | +"""TC: O(n), SC: O(n) |
| 54 | +
|
| 55 | +-n <= a, b <= n κ°μ . |
| 56 | +λ¬Έμ μμλ nμ΄ 1000μΌλ‘ μ£Όμ΄μ Έμλ€κ³ λ³Ό μ μλ€. |
| 57 | +
|
| 58 | +μμ΄λμ΄: |
| 59 | +μ μ²λ¦¬ ν κ²μ κ°μ Έμ€λ λ°©λ²μ λͺ» μ°κ² λμμ§λ§, μΈλ±μ€λ₯Ό ν΅ν μ κ·Όμ μμ§ κ·Έλλ‘ μ°κ³ μΆλ€. |
| 60 | +
|
| 61 | +- λ¬Έμ μ 쑰건μ λ°κΏμ 0 <= a, b <= nλΌκ³ ν΄λ³΄μ. κ·Έλ¦¬κ³ nμ΄ 3μ΄λΌκ³ ν΄λ³΄μ. |
| 62 | +- aκ° 0μΌλ‘ κ³ μ λμ΄ μλ€λ©΄, λ€μκ³Ό κ°μ λ°°μ΄μ΄ μ£Όμ΄μ‘μλ a+bμ κ°μ μΈλ±μ€λ‘ μ κ·Όν μ μλ€. |
| 63 | + - v = [0, 1, 2, 3] μΌλ a + b κ°μ v[b] |
| 64 | +- aκ° 1λ‘ κ³ μ λμ΄ μλ€λ©΄, |
| 65 | + - v = [1, 2, 3, 4] μΌλ a + b κ°μ v[b] |
| 66 | +- aκ° 2λ‘ κ³ μ λμ΄ μλ€λ©΄, |
| 67 | + - v = [2, 3, 4, 5] μΌλ a + b κ°μ v[b] |
| 68 | +- aκ° 3μΌλ‘ κ³ μ λμ΄ μλ€λ©΄, |
| 69 | + - v = [3, 4, 5, 6] μΌλ a + b κ°μ v[b] |
| 70 | +- μμ λ°°μ΄μ 보면 κ²ΉμΉλ μ«μλ€μ΄ λ§λ€. κ·Έλ λ€λ©΄ 0~6κΉμ§ μ«μλ€μ΄ λ€μ΄μλ λ°°μ΄μ slicingν΄μ |
| 71 | + μ°λ©΄ λμ§ μμκΉ? |
| 72 | + - aκ° 0μΌλ v = [0, 1, 2, 3, 4, 5, 6] μ€ |
| 73 | + [0, 1, 2, 3] μ¬μ©. |
| 74 | + μ¦, v[0:4] μ¬μ©. |
| 75 | +
|
| 76 | + - aκ° 1μΌλ v = [0, 1, 2, 3, 4, 5, 6] μ€ |
| 77 | + [1, 2, 3, 4] μ¬μ©. |
| 78 | + μ¦, v[1:5] μ¬μ©. |
| 79 | + ... |
| 80 | + - μΌλ°ννλ©΄, v[a:a+n+1] μ¬μ©. μ΄λ a+b κ°μ v = list(range(0, 2 * n + 1))μΌλ v[a:a+n+1][b]. |
| 81 | +- κ·Έλ°λ° v[a:a+n+1][b]λ₯Ό 보면 μ¬λΌμ΄μ± νλ λΆλΆμμ + κΈ°νΈλ₯Ό μ¬μ©νλ€. |
| 82 | + - κ·Έλ λ€λ©΄ μ κΈ°μ λνκΈ° κΈ°νΈλ₯Ό μ¬μ©ν νμ μμ΄ μ¬λΌμ΄μ±μ μμ κ°κ³Ό λ κ°λ 미리 리μ€νΈλ‘ λ§λ€κ³ , |
| 83 | + μ΄ λ¦¬μ€νΈμμ aλ²μ§Έ μμ΄ν
μ κ°μ Έμ€λ λ°©μμ νμ©ν΄λ³΄μ. |
| 84 | + - s = [0, 1, 2, 3], e = [4, 5, 6, 7]μΌλ, v[a:a+n+1][b] = v[s[a]:e[a]][b]κ° λλ€. |
| 85 | + - μΌλ°ννλ©΄, s = list(range(0, n)), e = list(range(n+1, 2*n+1))μ΄λ©΄ λλ€. |
| 86 | + - eλ₯Ό λ§λ€λ©΄μ λνκΈ°λ₯Ό μ΄ κ²μ²λΌ 보μ΄μ§λ§, μ€μ λ‘λ nμ΄ μ£Όμ΄μ§ μμμ΄λ―λ‘ κ°μ κ³μ°ν΄μ λ£μΌλ©΄ λλ€. |
| 87 | + - μλ₯Ό λ€μ΄, n=3μΌλ e = list(range(4, 7))μ΄λ€. |
| 88 | +
|
| 89 | +ν° μμ΄λμ΄λ μμ λ°©μμΌλ‘ μ€λͺ
μ΄ λλ¬λ€. μ΄μ λ¬Έμ λ 0 <= a, b <= nμ΄ μλλΌ -n <= a, b <= n λ²μμμλ |
| 90 | +μμ λ°©μμ΄ μλνλλ‘ νλ κ²μΈλ°, λ¨Όμ aκ°μ μμ λ²μμ λκ³ bκ°λ§ μμλ‘ νμ₯ν μνμμ vλ₯Ό ꡬν΄λ³΄κ³ , |
| 91 | +κ·Έ λ€μ aλ μμκΉμ§ νμ₯νλ μμΌλ‘ μ κ·Όνλ©΄ λλ€. μμΈν μ€λͺ
μ μλ΅νκ³ , λ λ€ μμ λ²μκΉμ§ νμ₯ν λ€ |
| 92 | +μ€μ λ‘ μλνλ κ²°κ³Όλ¬Όμ μ€λͺ
νλ κ²μΌλ‘ λμ νκ² λ€. |
| 93 | +
|
| 94 | +- nμ 3μ΄λΌκ³ κ°μ νκ² λ€. |
| 95 | +- v = [0, 1, 2, 3, 4, 5, 6, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -6, -5, -4, -3, -2, -1] |
| 96 | + - list(range(0, n+1))μ list(range(-n, 0))μ μ΄μ΄λΆμΈ κ²μ λ λ² λ°λ³΅νλ€. |
| 97 | + - λ λ² λ°λ³΅ν μ΄μ λ aκ°μ΄ μμκ° λ μν©μ λμνκΈ° μν¨μ΄λ€. μλμ μ€λͺ
μ μ΄μ΄μ 보λλ‘ νμ. |
| 98 | +- s = list(range(0, 4 * n + 1)) = list(range(0, 13))μ΄λ€. |
| 99 | + - μ΄λ κ² νλ©΄ aκ° μμκ° λμμλλ slicingμ μμν μΈλ±μ€λ μμλ‘ μ μ§ν μ μλ€. |
| 100 | + - bλ₯Ό 0μΌλ‘ κ³ μ νλ©΄ slicingμ μμνλ μΈλ±μ€μ μλ μμ΄ν
μ΄ a+bμ κ°μ΄ λμ΄μΌ νλ€. |
| 101 | + - μ΄λ₯Ό μμ vμ κ°μ΄ μκ°νλ©΄ vμ μ 13κ° μμ΄ν
μ μ·¨ν [0, 1, 2, 3, 4, 5, 6, -6, -5, -4, -3, -2, -1] |
| 102 | + λ°°μ΄μ΄ μμλ aκ° μ·¨ν μ μλ κ°μ λ²μλ -3~3μ΄λ―λ‘ [0, 1, 2, 3, ..., -3, -2, -1] μ€ νλλΆν° |
| 103 | + slicingμ΄ μμλλ€κ³ 보면 λλ€. |
| 104 | + - κ·Έλ¬λκΉ μ½κ² λ§ν΄μ aμ λ²μλ‘ μΈν΄ slicingμ΄ μμ΄ν
4λΆν° μμν΄μ [4, 5, 6, -6, ...] νλ μΌμ΄ |
| 105 | + μΌμ΄λμ§λ μλλ€λ λ». |
| 106 | +- slicingν λ°°μ΄μ ν¬κΈ°λ 4*n+1μ΄μ΄μΌ νλ€. eλ sμ κ° μμ΄ν
μ 4*n+1μ λν κ°μ΄λ©΄ λλ€. |
| 107 | + - 4*n+1μ κ΄μ°°μ ν΅ν΄ μ»μ μ μλ κ°μ΄λ€.a, bμ ν©μ μ΅μκ° -2*n, μ΅λκ° 2*nμ΄μ΄μ κ·Έ μ¬μ΄μ μλ |
| 108 | + μ«μλ€μ΄ μ΄ 4*n+1κ° μλ€λ κ²μμ λΉλ‘―λ μ«μλ€. |
| 109 | + - λμ μμλ₯Ό 보면 μ΄ν΄κ° μ’ λ νΈνλ€. |
| 110 | + - μ 리νλ©΄, e = list(range(4*n+1, 8*n+2)) = list(range(13, 26))μ΄λ€. |
| 111 | +- a+b κ°μ v[s[a] : e[a]][b] λ‘ κ΅¬ν μ μλ€. |
| 112 | +- μλ₯Ό λ€μ΄, a=2, b=-3μ΄λΌκ³ ν λ |
| 113 | + - v[s[a] : e[a]] = v[2:15] = [2, 3, 4, 5, 6, -6, -5, -4, -3, -2, -1, 0, 1]λ€. |
| 114 | + - bκ° -3μ΄λ―λ‘ μμ slicingλ λ°°μ΄μμ λ€μμ μΈ λ²μ§Έ μμ΄ν
μ μ°ΎμΌλ©΄ λλ€. μ¦, -1μ΄λ€. |
| 115 | + - μ κ΄μ°°νλ©΄ λ§μ
μ κ²°κ³Όκ° λ μ μλ κ°μ [2, 3, 4, 5, ..., -1, 0, 1] λ°μ μλ€. μ¬μ΄μ μλ μ«μλ |
| 116 | + bμ λ²μκ° μ νλμ΄ μμ΄μ μ κ·Ό λΆκ°λ₯ν, μ¦, νμ μλ μ«μλ€μ΄λΌκ³ 보면 λλ€. |
| 117 | +
|
| 118 | +SC: |
| 119 | +- μ½λ μ°Έμ‘°. O(n). |
| 120 | +
|
| 121 | +TC: |
| 122 | +- μΈλ±μ€λ₯Ό ν΅ν΄ λ°λ‘ μ κ·Ό. O(1). |
| 123 | +""" |
| 124 | + |
| 125 | + |
| 126 | +class Solution: |
| 127 | + def getSum(self, a: int, b: int) -> int: |
| 128 | + x = list(range(0, 2001)) |
| 129 | + x.extend(list(range(-2000, 0))) |
| 130 | + v = x * 2 # SC: O(n) |
| 131 | + s = list(range(0, 4001)) # SC: O(n) |
| 132 | + e = list(range(4001, 8002)) # SC: O(n) |
| 133 | + return v[s[a] : e[a]][b] |
0 commit comments