https://school.programmers.co.kr/learn/courses/30/lessons/42583
문제 해결을 위한 과정
이 문제의 경우 deque를 이용하면 쉽게 해결할 수 있는 문제였습니다.
과정은 다음과 같습니다.
1. 다리에 존재하는 트럭들 한 칸 이동시키기 - queue를 (truck, cnt)로 pair 형태로 넣어두면 cnt를 1 증가시키는 걸로 가능
2. 1의 과정 이 후 제일 앞에 있는 트럭의 cnt가 bridge_length와 같다면 popleft 해주기. (다리를 다 이동한 경우)
3. 다리에 존재하는 트럭들의 무게를 확인하여 남은 트럭 중 제일 앞에 트럭을 올려도 올라가는지 확인
3-1. 올라갈 수 있다면 다리에 올리기
3-2. 올라갈 수 없다면 다리에 올리지 않기
소스코드
from collections import deque def solution(bridge_length, weight, truck_weights): answer = 0 finish = deque() moving = deque() length = len(truck_weights) while True: if len(finish) == length: break answer += 1 for i in range(len(moving)): # 이동 truck, cnt = moving[i] moving[i] = truck, cnt + 1 if len(moving) != 0: truck, cnt = moving[0] if cnt == bridge_length: # 다리 다 이동하면 finish로 이동 finish.append(moving.popleft()) tempWeight = 0 for i in range(len(moving)): truck, cnt = moving[i] tempWeight += truck if len(truck_weights) != 0 and tempWeight + truck_weights[0] <= weight: moving.append((truck_weights[0], 0)) truck_weights.pop(0) return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 올바른 괄호 (Python) (0) | 2024.04.13 |
---|---|
프로그래머스 디스크 컨트롤러 (Python) (0) | 2024.04.13 |
프로그래머스 기능개발 (Python) (0) | 2024.04.12 |
프로그래머스 같은 숫자는 싫어 (Python) (0) | 2024.04.12 |
프로그래머스 더 맵게 (Python) (0) | 2024.04.09 |