π λ¬Έμ μ€λͺ
rows x columns ν¬κΈ°μΈ νλ ¬μ΄ μμ΅λλ€. νλ ¬μλ 1λΆν° rows x columnsκΉμ§μ μ«μκ° ν μ€μ© μμλλ‘ μ νμμ΅λλ€. μ΄ νλ ¬μμ μ§μ¬κ°ν λͺ¨μμ λ²μλ₯Ό μ¬λ¬ λ² μ νν΄, ν λ리 λΆλΆμ μλ μ«μλ€μ μκ³λ°©ν₯μΌλ‘ νμ μν€λ € ν©λλ€. κ° νμ μ (x1, y1, x2, y2)μΈ μ μ 4κ°λ‘ νννλ©°, κ·Έ μλ―Έλ λ€μκ³Ό κ°μ΅λλ€.
- x1 ν y1 μ΄λΆν° x2 ν y2 μ΄κΉμ§μ μμμ ν΄λΉνλ μ§μ¬κ°νμμ ν λ리μ μλ μ«μλ€μ ν μΉΈμ© μκ³λ°©ν₯μΌλ‘ νμ ν©λλ€.
λ€μμ 6 x 6 ν¬κΈ° νλ ¬μ μμμ λλ€.
μ΄ νλ ¬μ (2, 2, 5, 4) νμ μ μ μ©νλ©΄, μλ κ·Έλ¦Όκ³Ό κ°μ΄ 2ν 2μ΄λΆν° 5ν 4μ΄κΉμ§ μμμ ν λλ¦¬κ° μκ³λ°©ν₯μΌλ‘ νμ ν©λλ€. μ΄λ, μ€μμ 15μ 21μ΄ μλ μμμ νμ νμ§ μλ κ²μ μ£ΌμνμΈμ.
νλ ¬μ μΈλ‘ κΈΈμ΄(ν κ°μ) rows, κ°λ‘ κΈΈμ΄(μ΄ κ°μ) columns, κ·Έλ¦¬κ³ νμ λ€μ λͺ©λ‘ queriesκ° μ£Όμ΄μ§ λ, κ° νμ λ€μ λ°°μ΄μ μ μ©ν λ€, κ·Έ νμ μ μν΄ μμΉκ° λ°λ μ«μλ€ μ€ κ°μ₯ μμ μ«μλ€μ μμλλ‘ λ°°μ΄μ λ΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- rowsλ 2 μ΄μ 100 μ΄νμΈ μμ°μμ λλ€.
- columnsλ 2 μ΄μ 100 μ΄νμΈ μμ°μμ λλ€.
- μ²μμ νλ ¬μλ κ°λ‘ λ°©ν₯μΌλ‘ μ«μκ° 1λΆν° νλμ© μ¦κ°νλ©΄μ μ νμμ΅λλ€.
- μ¦, μ무 νμ λ νμ§ μμμ λ, i ν j μ΄μ μλ μ«μλ ((i-1) x columns + j)μ λλ€.
- queriesμ νμ κ°μ(νμ μ κ°μ)λ 1 μ΄μ 10,000 μ΄νμ λλ€.
- queriesμ κ° νμ 4κ°μ μ μ [x1, y1, x2, y2]μ
λλ€.
- x1 ν y1 μ΄λΆν° x2 ν y2 μ΄κΉμ§ μμμ ν λ리λ₯Ό μκ³λ°©ν₯μΌλ‘ νμ νλ€λ λ»μ λλ€.
- 1 ≤ x1 < x2 ≤ rows, 1 ≤ y1 < y2 ≤ columnsμ λλ€.
- λͺ¨λ νμ μ μμλλ‘ μ΄λ£¨μ΄μ§λλ€.
- μλ₯Ό λ€μ΄, λ λ²μ§Έ νμ μ λν λ΅μ 첫 λ²μ§Έ νμ μ μ€νν λ€μ, κ·Έ μνμμ λ λ²μ§Έ νμ μ μ€ννμ λ μ΄λν μ«μ μ€ μ΅μκ°μ ꡬνλ©΄ λ©λλ€.
μ μΆλ ₯ μμ
6 | 6 | [[2,2,5,4],[3,3,6,6],[5,1,6,3]] | [8, 10, 25] |
3 | 3 | [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] | [1, 1, 5, 3] |
100 | 97 | [[1,1,100,97]] | [1] |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
- νμ μ μννλ κ³Όμ μ κ·Έλ¦ΌμΌλ‘ νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
μ μΆλ ₯ μ #2
- νμ μ μννλ κ³Όμ μ κ·Έλ¦ΌμΌλ‘ νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
μ μΆλ ₯ μ #3
- μ΄ μμμμλ νλ ¬μ ν λ리μ μμΉν λͺ¨λ μΉΈλ€μ΄ μμ§μ λλ€. λ°λΌμ, νλ ¬μ ν λ리μ μλ μ μ€ κ°μ₯ μμ μ«μμΈ 1μ΄ λ°λ‘ λ΅μ΄ λ©λλ€.
π νμ΄ μ½λ
import heapq
def solution(rows, columns, queries):
answer = [[columns*j+i+1 for i in range(columns)] for j in range(rows)]
retval = []
for query in queries:
a, b, c, d = query
copied = [item[:] for item in answer]
heap = []
for i in range(b, d):
answer[a-1][i] = copied[a-1][i-1]
heapq.heappush(heap, copied[a-1][i-1])
for j in range(a, c):
answer[j][d-1] = copied[j-1][d-1]
heapq.heappush(heap, copied[j-1][d-1])
for k in range(d-2, b-2, -1):
answer[c-1][k] = copied[c-1][k+1]
heapq.heappush(heap, copied[c-1][k+1])
for m in range(c-2, a-2, -1):
answer[m][b-1] = copied[m+1][b-1]
heapq.heappush(heap, copied[m+1][b-1])
retval.append(heapq.heappop(heap))
return retval
λΈλ£¨νΈν¬μ€ / ꡬν λ¬Έμ μ΄λ€.
μ€λ§..? νμ§λ§ μ§μ§ νλ ¬ ν λλ¦¬λ§ νμ νλ μκ³ λ¦¬μ¦μ ꡬννλ©΄ λλ€.
μΏΌλ¦¬κ° 10,000κ°μμλ, μκ° μ΄κ³Όλ λμ§ μμλ€.
νκ³Ό μ΄μ΄ μ΅λ 100μ΄λ―λ‘, μ μΌ ν° ν λλ¦¬κ° νμ νλ©΄ μμμ μ΄λμ΄ μ΅λ μ½ 400λ², ν ꡬμ±κ³Ό λ°°μ΄ μΉ΄νΌλ₯Ό κ³ λ €νκ³ μΏΌλ¦¬κ° 10,000λ² λλλΌλ 1μ΅λ²μ μ°μ°μλ λͺ» λ―ΈμΉ κ²μΌλ‘ μμλμκΈ° λλ¬Έμ΄λ€.
μ€μν μ μ, copyλ₯Ό ν λ deepcopyλ₯Ό μ¬μ©νμ§ μμλ€.
νμ΄μ¬μμ deepcopyλ μ¬λΌμ΄μ±μ νμ©ν κΉμ 볡μ¬λ³΄λ€ ν¨μ¬ λ리기 λλ¬Έμ κΌ νμν κ²½μ°κ° μλλΌλ©΄ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€.
iλ μμͺ½ ν λ리μ μ€λ₯Έμͺ½ μ΄λ, jλ μ€λ₯Έμͺ½ ν λ리μ μλ μ΄λ, kλ μλμͺ½ ν λ리μ μΌμͺ½ μ΄λ, mμ μΌμͺ½ ν λ리μ μμͺ½ μ΄λμ λνλΈ λ°λ³΅λ¬Έμ΄λ€. νμν μ¬λμ μ°Έκ³ νκΈΈ λ°λλ€.
κ²°κ΅ λ°νν΄μΌ νλ κ°μ νμ ν ν λ리μ μ΅μκ°μ΄λ€. κ°μ μ΄λμν€λ κ³Όμ μμ ν΄λΉ κ°μ μ΅μ νμ μ§μ΄λ£κ³ , ν 쿼리μ λν κ²°κ³Όλ₯Ό νμ popμ μ΄μ©ν΄ ꡬμ±νλ©΄ μκ°λ³΅μ‘λλ₯Ό λμ± μ€μΌ μ μλ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] κ°μ₯ λ¨Ό λ Έλ (level3, python) (0) | 2022.10.13 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] λ°©κΈκ·Έκ³‘ (level2, python) (1) | 2022.10.13 |
[νλ‘κ·Έλλ¨Έμ€] κ΄νΈ λ³ν (level2, python) (0) | 2022.10.11 |
[νλ‘κ·Έλλ¨Έμ€] λ§€λ΄ λ¦¬λ΄μΌ (level2, python) (0) | 2022.10.10 |
[νλ‘κ·Έλλ¨Έμ€] 보μ μΌν (level3, python) (0) | 2022.10.10 |