728x90
Question 1
def maxCost(cost, labels, dailyCount):
# Write your code here
total = 0
result = []
count = 0 # count the legal laptop
n = len(cost)
for i in range(n):
if labels[i] == "legal":
count += 1
total += cost[i]
if count == dailyCount:
result.append(total)
total = 0
count = 0
else:
total += cost[i]
if len(result) == 0:
return 0
else:
return max(result)
Question 2
def mostBalancedPartition(parent, files_size):
def helper(node, adj, file_sizes):
queue = [node]
weight = 0
while queue:
index = queue.pop()
weight += file_sizes[index]
if index in adj:
queue.extend(adj[index]) # extend는 iterable 타입을 추가해줄 떄 사용한다.
return weight
adj = {}
edges = []
for index, p in enumerate(parent):
edges.append((p, index))
if p in adj:
adj[p].append(index)
else:
adj[p] = [index]
total_weight = sum(files_size)
min_diff = sum(files_size)
for e in edges:
p, c = e
adj[p].remove(c) # index를 삭제했을 떄 -> 연결 끊기
w1 = helper(c, adj, files_size) # c와 연결되어 있는 노드들의 value 합을 w1에 저장
min_diff = min(min_diff, abs(total_weight-w1*2))
adj[p].append(c)
return min_diff
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 10992 파이썬 (0) | 2022.01.22 |
---|---|
[프로그래머스] 외벽 점검 in python (0) | 2022.01.19 |
[카카오] 무지의 먹방 라이브 python (0) | 2022.01.16 |
백준 2583 파이썬 (2) | 2022.01.14 |
[백준] 9019 파이썬 풀이 (in Python) (0) | 2022.01.12 |