λ¬Έμ μ€λͺ
νμ ν°νΈλ¦¬κΈ°
λ¬Έμ μ€λͺ
μΌλ ¬λ‘ λμ΄λ nκ°μ νμ μ΄ μμ΅λλ€. λͺ¨λ νμ μλ μλ‘ λ€λ₯Έ μ«μκ° μ¨μ Έ μμ΅λλ€. λΉμ μ λ€μ κ³Όμ μ λ°λ³΅νλ©΄μ νμ λ€μ λ¨ 1κ°λ§ λ¨μ λκΉμ§ κ³μ ν°νΈλ¦¬λ €κ³ ν©λλ€.
- μμμμΈμ νλ νμ μ κ³ λ₯Έ λ€, λ νμ μ€ νλλ₯Ό ν°νΈλ¦½λλ€.
- ν°μ§ νμ μΌλ‘ μΈν΄ νμ λ€ μ¬μ΄μ λΉ κ³΅κ°μ΄ μκ²Όλ€λ©΄, λΉ κ³΅κ°μ΄ μλλ‘ νμ λ€μ μ€μμΌλ‘ λ°μ°©μν΅λλ€.
μ¬κΈ°μ μ‘°κ±΄μ΄ μμ΅λλ€. μΈμ ν λ νμ μ€μμλ²νΈκ° λ μμ νμ μ ν°νΈλ¦¬λ νμλ μ΅λ 1λ²λ§ ν μ μμ΅λλ€. μ¦, μ΄λ€ μμ μμ μΈμ ν λ νμ μ€ λ²νΈκ° λ μμ νμ μ ν°νΈλ Έλ€λ©΄, κ·Έ μ΄νμλ μΈμ ν λ νμ μ κ³ λ₯Έ λ€ λ²νΈκ° λ ν° νμ λ§μ ν°νΈλ¦΄ μ μμ΅λλ€.
λΉμ μ μ΄λ€ νμ μ΄ μ΅νκΉμ§ λ¨μ μ μλμ§ μμλ³΄κ³ μΆμ΅λλ€. μμ μμ λ 쑰건λλ‘ νμ μ ν°νΈλ¦¬λ€ 보면, μ΄λ€ νμ μ μ΅νκΉμ§ λ¨μ μλ μμ§λ§, μ΄λ€ νμ μ λ¬΄μ¨ μλ₯Ό μ°λλΌλ λ§μ§λ§κΉμ§ λ¨κΈ°λ κ²μ΄λΆκ°λ₯ν μλ μμ΅λλ€.
μΌλ ¬λ‘ λμ΄λ νμ λ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ aκ° μ£Όμ΄μ§λλ€. μμ μμ λ κ·μΉλλ‘ νμ λ€μ 1κ°λ§ λ¨μ λκΉμ§ ν°νΈλ Έμ λ μ΅νκΉμ§ λ¨κΈ°λ κ²μ΄ κ°λ₯ν νμ λ€μ κ°μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν
- aμ κΈΈμ΄λ 1 μ΄μ 1,000,000 μ΄νμ
λλ€.
- a[i]λ i+1 λ²μ§Έ νμ μ μ¨μ§ μ«μλ₯Ό μλ―Έν©λλ€.
- aμ λͺ¨λ μλ -1,000,000,000 μ΄μ 1,000,000,000 μ΄νμΈ μ μμ λλ€.
- aμ λͺ¨λ μλ μλ‘ λ€λ¦ λλ€.
μ μΆλ ₯ μ
result
[9,-1,-5] | 3 |
[-16,27,65,-2,58,-92,-71,-68,-61,-33] | 6 |
νμ΄
μ²μ 보μμ λ, μ΄λ»κ² νμ΄μΌν μ§ κ°μ΄ μ€μ§ μμλ€.
μμ λ₯Ό λ³΄κ³ μ‘°κΈ μκ°μ ν΄λ³΄μλλ°, κ°μ μ‘μλ€.
μ°μ κ°μ₯ ν° κ°μ κΈ°μ€μΌλ‘, κ°μ λλμ΄μΌ νλ€.
λ²νΈκ° λ μμ νμ μ ν°νΈλ¦¬λ νμλ μ΅λ 1λ²μ΄λ€.
λ°λΌμ μ΄λ νμ μ΄ λ¨μΌλ €λ©΄, κ·Έ 1λ²μ νμλ λ°λμ κ°μ₯ μμ κ°κ³Ό κ·Έ νμ 2κ°κ° λ¨μμ λ μ¬μ©ν΄μΌ νλ€.
( A )κ°μ₯ μμ κ°( B ) λ‘ λλμμ λλ₯Ό λ€μκ³Ό κ°λ€κ³ μκ°ν΄λ³΄μ.
[( a, b, c, d, e) κ°μ₯ μμ κ° (f, g, h, i, j)]
μκ°ν΄λ³΄λ©΄ aμ jλ 무쑰건 κ°λ₯ν¨μ μ μ μλ€. μλλ©΄ κ°μ₯ μμ κ°μ΄ (b, c, d, e), (f, g, h, i)λ₯Ό ν°νΈλ¦΄ μ μκΈ° λλ¬Έμ΄λ€.
κ·Έλ λ€λ©΄, bκ° λ¨μΌλ €λ©΄ μ΄λ»κ² ν΄μΌν κΉ? μ½λ€. aλ³΄λ€ μμΌλ©΄ λλ€.
cκ° λ¨μΌλ €λ©΄? a, b λ³΄λ€ μμΌλ©΄ λλ€.
μ¦ κ·Έ κ°μ΄ κ°μ₯ μμκ°?λ₯Ό νμΈνλ λ¬Έμ μΈλ° λμ κ²½μ° min heap
μλ£κ΅¬μ‘°λ₯Ό μ΄μ©ν΄μ νμλ€.
μ½λλ₯Ό μ½μ΄λ³΄λ©΄ μ΄ν΄κ° λ κ²μ΄λ€.
import heapq
def solution(a):
answer = 0
min_h = []
idx = a.index(min(a))
left = a[:idx]
right = reversed(a[idx+1:])
for v in left:
heapq.heappush(min_h, v)
if min_h[0] == v:
answer += 1
min_h = []
for v in right:
heapq.heappush(min_h, v)
if min_h[0] == v:
answer += 1
return answer + 1
무μμ λ κ°μ ν μ μλκ°?
μ¬μ€ heap μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νμ§ μμλ λλ€.
κ·Έλ₯ μ΅λκ°, μ΅μκ°μ κ³μ μ μ₯νκ³ μμΌλ©΄ λλ λ§μ΄λ€.
λ€μμ κ·Έ νμ΄μ΄λ€.
def solution(a):
answer = 0
left, right = float('inf'), float('inf')
min_map = [[0, 0] for _ in range(len(a))]
# μΌμͺ½ λ²μμμ μ΅μκ° μ°ΎκΈ°
for i in range(len(a)):
if left > a[i]:
left = a[i]
min_map[i][0] = left
# μ€λ₯Έμͺ½ λ²μμμ μ΅μκ° μ°ΎκΈ°
for i in range(len(a) - 1, -1, -1):
if right > a[i]:
right = a[i]
min_map[i][1] = right
# μ°Ύμ μ΅μκ° λ°μ΄ν°λ₯Ό κ°μ§κ³ κΈ°μ€ μ«μμ μμͺ½μ΄ λͺ¨λ κΈ°μ€ μ«μλ³΄λ€ μμΌλ©΄ answer += 1
for i in range(len(a)):
if a[i] <= min_map[i][0] or a[i] <= min_map[i][1]:
answer += 1
return answer
'Problem Solving π₯ > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] μμ / νμ΄μ¬ (0) | 2021.01.19 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] μΆμ νΈλν½ / νμ΄μ¬ (0) | 2021.01.18 |
[νλ‘κ·Έλλ¨Έμ€] νμΌλͺ μ λ ¬ / νμ΄μ¬ (0) | 2021.01.17 |
[νλ‘κ·Έλλ¨Έμ€] nμ§μ κ²μ / νμ΄μ¬ (0) | 2021.01.17 |
[νλ‘κ·Έλλ¨Έμ€] μμΆ / νμ΄μ¬ / (λμ λ리) (0) | 2021.01.16 |