티스토리 뷰

반응형

https://programmers.co.kr/learn/courses/30/lessons/86048

 

코딩테스트 연습 - 7주차

사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는

programmers.co.kr

 


⊙ 문제

⊙ 제한사항

⊙ 입출력 예


 

⊙ 문제 접근 과정

 

리스트를 먼저 덱으로 변경해줬다.

 

그다음 스택을 만들어주어 스택에 값이 없다면 enter에서 맨 앞에 값을 빼온다.

그리고 leave 순서가 되기 전까지 enter의 맨 앞의 값을 빼와 stack에 계속 넣어준다.

 

그러다가 스택에 leave값이 있다면 제거해주고 stack에 값들을 count 해준다.

 

마지막으로 index 0부터가 아닌 1부터 출력을 해준다.

 

 


 

⊙ 문제 풀이

 

from collections import deque

def solution(enter, leave):
    result = [0] * (len(enter)+1)
    enter, leave = deque(enter), deque(leave)
    stack = []

    while leave:
        if not stack:
            stack.append(enter.popleft())
        
        while enter and leave[0] not in stack:
            stack.append(enter.popleft())
        
        N = leave.popleft()
        stack.remove(N)

        for s in stack:
            if s != N:
                result[N] +=1
                result[s] +=1
    return result[1:]

⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함