Data Structure/Queue 7

[백준 13335번] 트럭

https://www.acmicpc.net/problem/13335import sysinput = sys.stdin.readlinefrom collections import deque# 강을 가로지르는 하나의 차선으로 된 다리# 이 다리를 n 개의 트럭이 건너가려고 한다# 트럭의 순서는 바꿀 수 없으며, 트럭의 무게는 서로 같지 않을 수 있다.# 다리 위에는 단지 w 대의 트럭만 동시에 올라갈 수 있다. # 각 트럭들은 하나의 단위시간(unit time)에 하나의 단위길이만큼만 이동할 수 있다고 가정# 동시에 다리 위에 올라가 있는 트럭들의 무게의 합은 다리의 최대하중인 L보다 작거나 같아야 한다.# 참고로, 다리 위에 완전히 올라가지 못한 트럭의 무게는 다리 위의 트럭들의 무게의 합을 계산할 때 포함하..

[소프티어 6270번] GBC

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 이번 문제는 총 100m의 'N개의 구간 및 제한 속도'와 'M개의 테스트 구간 및 속도'가 주어졌을 때 테스트한 구간의 속도를 기준으로 가장 크게 제한 속도를 넘어간 값을 구하는 문제이다. 본 문제를 해결하기 위해서 모든 구간과 속도를 Queue에 담고(시간복잡도를 최소화하기 위해 deque 사용), 구간의 길이에 따라 경우를 나눠서 분기처리 해주었다.

[프로그래머스 PCCP 모의고사 3번] 카페 확장

from collections import deque def solution(menu, order, k): answer = 0 queue = deque() for i in order: queue.append(menu[i]) answer = max(answer,len(queue)) time = k while queue: # queue[0]과 time을 비교(걸리는 시간과 남은 시간) if queue[0] time: queue[0] -= time break else: queue.popleft() break return answer 이번 문제는 Queue 자료구조를 사용하여 푸는 문제인데 문제의 조건이 조금 ..

[프로그래머스 Lv.2] 다리를 지나는 트럭

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(bridge_length, weight, truck_weights): time = 0 queue = [] while truck_weights or queue: time += 1 if queue: queue = [(x[0],x[1]-1) for x in queue if x[1]-1 != 0] if truck_weights and sum([x[0] for x in queue]) + truck_weights[0]

[프로그래머스 Lv.2] 프로세스

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(priorities, location): answer = 0 queue = [(i,value) for i,value in enumerate(priorities)] while queue: index, priority = queue.pop(0) if queue and max([x[1] for x in queue]) > priority: queue.append((index,priority)) continue answer += 1 if index == location: return answer..

[프로그래머스 Lv.2] 기능개발

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(progresses, speeds): answer = [] length = len(progresses) while len(progresses) > 0: count = 0 remain = 100-progresses[0] if remain%speeds[0] != 0: remain = remain // speeds[0] + 1 else: remain = remain // speeds[0] progresses = [value+(remain*..