Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 티스토리 open api
- 티스토리
- pycon
- 튜플
- Open API
- 보행자 천국
- 불량 사용자
- 트라이 #trie #알고리즘
- trie
- 호텔 방 배정
- 프로그래머스
- CleanCode
- Spring Boot
- Tistory
- 트라이
- 카카오 인턴
- 가사 검색
- bulk update
- 알고리즘
- 크레인 인형뽑기 게임
- jdbc
- 징검다리 건너기
- Python
Archives
- Today
- Total
택시짱의 개발 노트
[프로그래머스] 7주차 본문
링크
https://programmers.co.kr/learn/courses/30/lessons/86048
풀이
loom이라는 딕셔너리에 입장한 사람을 모두 넣어 준 후
leaves에서 나가려고 하는 사람이 방에 있을 경우
현재 loom에 있는 사람들에게 내가 나간다~ 라는 정보를 알려 주고 나가는 사람 또한 방에 있는 사람의 정보를 가지고 옵니다. (아래의 코드)
user_contact[leaves[leave_pointer]].add(key)
user_contact[key].add(leaves[leave_pointer])
그리구 각 사용자의 user_contact에 저장된 갯수를 확인 하면 됩니다.
코드
from collections import defaultdict, deque
def solution(enters, leaves):
loom, user_contact = defaultdict(bool), defaultdict(set)
leave_pointer = 0
for enter in enters:
loom[enter] = True
while loom[leaves[leave_pointer]]:
for key, value in loom.items():
if loom[key] and (key != leaves[leave_pointer]):
user_contact[leaves[leave_pointer]].add(key)
user_contact[key].add(leaves[leave_pointer])
loom[leaves[leave_pointer]] = False
leave_pointer += 1
if leave_pointer >= len(leaves):
leave_pointer -= 1
return [len(user_contact[user_id]) for user_id in range(1, len(enters) + 1)]
if __name__ == '__main__':
# enters, leaves = [1, 3, 2], [1, 2, 3]
# enters, leaves = [1, 4, 2, 3], [2, 1, 3, 4]
# enters, leaves = [3, 2, 1], [2, 1, 3]
# enters, leaves= [3, 2, 1], [1, 3, 2]
enters, leaves = [1, 4, 2, 3], [2, 1, 4, 3]
print(solution(enters, leaves))
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 6주차_복서 정렬하기 (0) | 2021.09.18 |
---|---|
[백준] - 미로 탈출 (0) | 2021.08.29 |
[프로그래머스] 위클리 챌린지4주차 (0) | 2021.08.24 |
[프로그래머스] 로또의 최고 순위와 최저 순위도움말 (0) | 2021.07.25 |
스트리미 코테 (21) | 2021.01.12 |
Comments