티스토리 뷰
Computer Science를 공부한 사람이라면 익숙한 pid(process id)와 ppid(parent process id)의 개념이 담긴 문제다. 해당 문제에서 각 process는 1개의 parent process만을 가질 수 있고 반면에 parent process는 여러 child process를 가질 수 있다. 해당 문제의 예시 그림으론 Tree 형태로 제시가 됐고, kill을 하기 위한 pid가 input으로 주어지고, 해당 process를 비롯해 연쇄적으로 모든 child process를 kill을 하기 위해 필요한 모든 pid를 List의 형태로 반환하는 문제다.
Input: pid = [1,3,10,5], ppid = [3,0,5,3], kill = 5
Output: [5,10]
Explanation: The processes colored in red are the processes that should be killed.
defaultdict을 활용해 구현했고, key로는 pid가 value로는 해당 pid의 모든 child pid를 List의 형태로 담았다. 이에 따라 input인 kill을 바탕으로 defaultdict의 value를 확인해 나가며 ret에 pid를 append해 반환하는 logic이다.
class Solution:
def killProcess(self, pid: List[int], ppid: List[int], kill: int) -> List[int]:
n = len(pid)
d = defaultdict(list)
q = deque()
ret = []
for i in range(n):
d[ppid[i]].append(pid[i])
q.append(kill)
ret.append(kill)
while q:
c = q.popleft()
cl = d[c]
for i, item in enumerate(cl):
q.append(item)
ret.append(item)
return ret
반응형
'기술(Tech, IT) > 리트코드(LeetCode)' 카테고리의 다른 글
[LeetCode] 1057. Campus Bikes (0) | 2023.06.15 |
---|---|
[LeetCode] 616. Add Bold Tag in String (0) | 2023.05.07 |
[LeetCode] 604. Design Compressed String Iterator (0) | 2023.05.05 |
[LeetCode] 359. Logger Rate Limiter (0) | 2023.04.02 |
[LeetCode] 360. Sort Transformed Array (0) | 2023.04.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 투 포인터
- 티스토리챌린지
- 소켓 프로그래밍
- 딕셔너리
- 파이썬
- vertex shader
- I2C
- tf-idf
- leetcode
- defaultdict
- ml
- machine learning
- java
- join
- 이코노미스트 에스프레소
- 안드로이드
- The Economist Espresso
- Hash Map
- Computer Graphics
- min heap
- 이코노미스트
- 머신 러닝
- socket programming
- 오블완
- DICTIONARY
- The Economist
- Python
- 리트코드
- Android
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형