-
[스택/큐] 다리를 지나는 트럭 / 프린터알고리즘/프로그래머스 2021. 10. 3. 14:07
https://programmers.co.kr/learn/courses/30/lessons/42583
- 문제의 상황을 코드로 잘 표현하면, 해결가능하다.
def solution(bridge_length, weight, truck_weights): time = 0 queue = [0] * bridge_length #다리길이 만큼의 queue, 비어있으면 0 while queue: time += 1 queue.pop(0) #다리 맨앞을 pop if truck_weights: if sum(queue) + truck_weights[0] <= weight: #만약 다음트럭이 건널 수 있으면 queue.append(truck_weights.pop(0)) else: queue.append(0) return time
https://programmers.co.kr/learn/courses/30/lessons/42587
- plist : 인덱스를 key로, 우선순위를 value로 하는 딕셔너리 리스트
[2, 1, 3, 2] [{0: 2}, {1: 1}, {2: 3}, {3: 2}] - 맨 앞의 문서의 우선순위가 뒤의 다른문서들보다 우선순위가 낮으면 check=0, plist의 맨뒤에 추가,
만약 맨 앞의 문서의 우선순위가 뒤의 다른문서들보다 우선순위가 높으면, check=1
- check가 1이라면, answer를 1증가시키고, 해당 문서가 location의 문서라면 return answer
- return answer + 1 는 맨마지막 출력되는 경우
def solution(priorities, location): answer = 0 plist = [{i: priorities[i]} for i in range(len(priorities))] while plist: check = 0 temp = plist.pop(0) for i in plist: if list(i.values())[0] > list(temp.values())[0]: check = 0 plist.append(temp) break check = 1 if check == 1: answer += 1 if list(temp.keys())[0] == location: return answer return answer + 1
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[위클리 챌린지] 9주차 (0) 2021.10.05 [힙(Heap)] 디스크 컨트롤러 (0) 2021.10.03 [힙(Heap)] 더 맵게 (0) 2021.10.02 [위클리 챌린지] 8주차 (0) 2021.09.27 [위클리 챌린지] 7주차 (0) 2021.09.17