-
[위클리 챌린지] 7주차알고리즘/프로그래머스 2021. 9. 17. 20:43
https://programmers.co.kr/learn/courses/30/lessons/86048
- 풀이
1. 현재 입실한 인원이 누구인지를 담는 now_in리스트와
Key가 번호, Value가 각 번호와 만났는지를 체크하는 리스트인 meet딕셔너리를 사용한다.
2. meet딕셔너리를 {번호, [0, 0, 0, ... ,0]} 의 형태로 초기화한다.
3. 만약 enter = [1, 3, 2] 이고, leave = [1, 2, 3] 일 경우... meet딕셔너리는 아래와 같다.
- 초기상태
Key Value 1 [0, 0, 0] 2 [0, 0, 0] 3 [0, 0, 0] - now_in=[1]
Key Value 1 [1, 0, 0] 2 [0, 0, 0] 3 [0, 0, 0] - now_in=[]
Key Value 1 [1, 0, 0] 2 [0, 0, 0] 3 [0, 0, 0] - now_in=[3]
Key Value 1 [1, 0, 0] 2 [0, 0, 0] 3 [0, 0, 1] - now_in=[3, 2]
Key Value 1 [1, 0, 0] 2 [0, 1, 1] 3 [0, 1, 1] 4. 누군가 입실할 때, 본인과 현재 입실해 있는 인원들의 리스트를 check한다.
5. 나 자신을 제외하고 check개수를 세서 반환한다.
- 코드
def solution(enter, leave): answer, now_in = [], [] meet = {} for i in range(len(enter)): meet[i+1] = [0 for k in range(len(enter))] for i in enter: while leave: if leave[0] in now_in: now_in.remove(leave.pop(0)) else: break now_in.append(i) for n in now_in: meet[n][i-1] = meet[i][n-1] = 1 return [sum(meet[i])-1 for i in meet]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[힙(Heap)] 더 맵게 (0) 2021.10.02 [위클리 챌린지] 8주차 (0) 2021.09.27 [완전탐색] 모의고사 / 소수 찾기 / 카펫 (0) 2021.09.15 [스택/큐] 기능개발 / 주식가격 (0) 2021.09.12 [위클리 챌린지] 6주차 (0) 2021.09.11