[Programmers] ์ ์ค ํด์ค
Updated:
์ ์ค ํด์ค
์ ์คย ํด์ค ์ ํด๋ฆญํ๋ฉด ๋ฐ๋ก ์ด๋ํ๋ค.
๋ฌธ์ ๋ฅผ ์์ผ๋ก ํ์ด๊ฐ๋ฉฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ๊ณ ์ฝ๋๋ก ์ฎ๊ฒผ๋๋ ๋ง์๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ํผ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ง์ง ์ ๊ธฐํ ์ฝ๋๊ฐ ๋ง๋ค..
from collections import deque
def solution(enter, leave):
answer = {i + 1: 0 for i in range(len(enter))}
room = []
deque_enter = deque(enter)
deque_leave = deque(leave)
while deque_leave:
# 1. ํด์ค์ top์ด room์ ์์๋ ๊น์ง ์
์คํ๋ค.
while deque_leave[0] not in room:
enter_people = deque_enter.popleft()
room.append(enter_people)
# 2. ํด์ค์ top์ด room์ ์๋ค๋ฉด
# 3. ํด์คํ๋ ์ฌ๋์ len(room) - 1 ๋ช
์ ๋ฌด์กฐ๊ฑด ๋ง๋๋ค.
# 4. ๋ฐฉ์ ๋๊ฐ๊ณ ํด์ค ๋ชฉ๋ก์์ ์ญ์ ํ๋ค.
leave_people = deque_leave[0]
answer[leave_people] += len(room) - 1
room.remove(leave_people)
deque_leave.popleft()
# 5. ๋ฐฉ์ ์๋ ์ฌ๋๋ค์ ๋ฌด์กฐ๊ฑด ๋ฐฉ๊ธ ๋๊ฐ ์ฌ๋์ ๋ง๋ฌ๊ธฐ ๋๋ฌธ์ ๋ง๋ ์ฌ๋์ 1 ๋ํด์ค๋ค.
for people in room:
answer[people] += 1
return list(answer.values())
Leave a comment