[νλ‘κ·Έλλ¨Έμ€/python] μν΄λ¦¬ μ±λ¦°μ§ 7μ£Όμ°¨ : μ μ€ ν΄μ€
λ¬Έμ μ€λͺ
μ¬νμ 거리λκΈ°λ₯Ό μν΄ νμμ€μ μΆμ ν λ λͺ λΆμ μ΄λ¦μ μ μ΄μΌ ν©λλ€. μ μ€κ³Ό ν΄μ€μ΄ λμμ μ΄λ€μ§λ κ²½μ°λ μμΌλ©°, μ μ€ μκ°κ³Ό ν΄μ€ μκ°μ λ°λ‘ κΈ°λ‘νμ§ μμ΅λλ€.
μ€λ νμμ€μλ μ΄ nλͺ μ΄ μ μ€ ν ν΄μ€νμ΅λλ€. νΈμμ μ¬λλ€μ 1λΆν° nκΉμ§ λ²νΈκ° νλμ© λΆμ΄μμΌλ©°, λ λ² μ΄μ νμμ€μ λ€μ΄μ¨ μ¬λμ μμ΅λλ€. μ΄λ, κ° μ¬λλ³λ‘ λ°λμ λ§λ μ¬λμ λͺ λͺ μΈμ§ ꡬνλ € ν©λλ€.
μλ₯Ό λ€μ΄ μ μ€ λͺ λΆμ κΈ°μ¬λ μμκ° [1, 3, 2], ν΄μ€ λͺ λΆμ κΈ°μ¬λ μμκ° [1, 2, 3]μΈ κ²½μ°,
- 1λ²κ³Ό 2λ²μ λ§λ¬λμ§ μ μ μμ΅λλ€.
- 1λ²κ³Ό 3λ²μ λ§λ¬λμ§ μ μ μμ΅λλ€.
- 2λ²κ³Ό 3λ²μ λ°λμ λ§λ¬μ΅λλ€.
λ λ€λ₯Έ μλ‘ μ μ€ μμκ° [1, 4, 2, 3], ν΄μ€ μμκ° [2, 1, 3, 4]μΈ κ²½μ°,
- 1λ²κ³Ό 2λ²μ λ°λμ λ§λ¬μ΅λλ€.
- 1λ²κ³Ό 3λ²μ λ§λ¬λμ§ μ μ μμ΅λλ€.
- 1λ²κ³Ό 4λ²μ λ°λμ λ§λ¬μ΅λλ€.
- 2λ²κ³Ό 3λ²μ λ§λ¬λμ§ μ μ μμ΅λλ€.
- 2λ²κ³Ό 4λ²μ λ°λμ λ§λ¬μ΅λλ€.
- 3λ²κ³Ό 4λ²μ λ°λμ λ§λ¬μ΅λλ€.
νμμ€μ μ μ€ν μμκ° λ΄κΈ΄ μ μ λ°°μ΄ enter, ν΄μ€ν μμκ° λ΄κΈ΄ μ μ λ°°μ΄ leaveκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ° μ¬λλ³λ‘ λ°λμ λ§λ μ¬λμ λͺ λͺ μΈμ§ λ²νΈ μμλλ‘ λ°°μ΄μ λ΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- 1 ≤ enterμ κΈΈμ΄ ≤ 1,000
- 1 ≤ enterμ μμ ≤ enterμ κΈΈμ΄
- λͺ¨λ μ¬λμ λ²νΈκ° μ€λ³΅μμ΄ νλμ© λ€μ΄μμ΅λλ€.
- leaveμ κΈΈμ΄ = enterμ κΈΈμ΄
- 1 ≤ leaveμ μμ ≤ leaveμ κΈΈμ΄
- λͺ¨λ μ¬λμ λ²νΈκ° μ€λ³΅μμ΄ νλμ© λ€μ΄μμ΅λλ€.
μ λ΅
from collections import deque
def solution(enter, leave):
answer = [0 for _ in range(len(enter)+1)]
leave = deque(leave)
room = []
for i in enter:
# μλ μλ μ«μλ λ§λ¨ νμ
for r in room:
answer[r] += 1
answer[i] += len(room)
room.append(i)
while leave and leave[0] in room:
room.remove(leave.popleft())
return answer[1:]
answerμλ κ° μΈλ±μ€κ° λͺ λͺ μ λ§λ¬λμ§λ₯Ό νμν΄μ€λ€.
μ«μ 0μ μ¬μ©νμ§ μμΌλ―λ‘ len(enter)+1λ§νΌ 0μΌλ‘ μ΄κΈ°ννλ€.
enterμ μ«μλ₯Ό μ°¨λ‘λλ‘ roomμ λ£μ΄μ€λ€.
μ«μ i λ₯Ό λ£μ λ roomμ λκ΅°κ° μλ€λ©΄
roomμ μλ μ«μμ μΈλ±μ€λ₯Ό κ°μ§ answerμ iμ λ§λ¬μμ νμνκΈ° μν΄ +1 ν΄μ€λ€.
answer[i]μλ roomμ μλ λͺ¨λ μ«μμ λ§λ¬μμ νμνκΈ° μν΄ +len(room)μ ν΄μ€λ€.
leaveμ 0λ²μ§Έ μΈλ±μ€κ° roomμ μλ€λ©΄ λ λμΌ νλ―λ‘
leaveμ 0λ²μ§Έ μΈλ±μ€λ₯Ό popνμ¬ roomμμ μ§μμ€λ€.
μ΄ λ leaveλ₯Ό dequeλ‘ λ³ννμ¬ popleftλ₯Ό ν΅ν΄ κΊΌλ΄λ©΄ λ ν¨μ¨μ μ΄λ€.
answer[0]μ μ¬μ©νμ§ μμμμΌλ‘ answer[1:]μ return νλ€.