문제
https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 접근 방식
트럭의 큐와 다리위의 큐를 두어서 문제를 풀려고 했다. (트럭의 무게, 트럭의 종료 시간)을 bridge_q에 넣어서 작업을 처리하는 방식으로 문제를 풀었으나 case 4개에서 오류가 발생했고, 기존 코드를 수정해서 풀려고 했으나 어디서 틀린지 모르겠어서 다른 분의 풀이를 참고했다.
처음 풀이(오답)
def solution(bridge_length, weight, truck_weights):
bridge_q=[]
current_time,bridge_weight = 1,0
while truck_weights :
if len(bridge_q)>=bridge_length or bridge_weight+truck_weights[0]>weight:
truck_weight,end_time=bridge_q.pop(0)
bridge_weight-=truck_weight
if current_time<end_time:
current_time=end_time
else:
current_time+=1
continue
truck_weight=truck_weights.pop(0)
bridge_q.append((truck_weight,current_time+bridge_length))
bridge_weight+=truck_weight
current_time+=1
answer=bridge_q.pop(-1)[1]
return answer
정답 풀이
bridge를 다리 길이만큼의 0으로 초기화하고, 1초씩 늘려가면서 bridge를 push, pop 하는 방식으로 문제를 풀었다.
def solution(bridge_length, weight, truck_weights):
answer = 0
bridge = [0 for _ in range(bridge_length)]
while bridge:
answer += 1
bridge.pop(0)
if truck_weights:
if sum(bridge) + truck_weights[0] <= weight:
t = truck_weights.pop(0)
bridge.append(t)
else:
bridge.append(0)
return answer
회고
기존 풀이 방법에서 뭐가 문제인지 파악하는데 많은 시간을 썼고, 시간 때문에 다른 분의 풀이를 봤다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
의상(프로그래머스) 문제풀이 (1) | 2024.04.12 |
---|---|
과제 진행하기(프로그래머스) 문제풀이 (0) | 2024.04.12 |
줄 서는 방법(프로그래머스) 문제풀이 (1) | 2024.04.12 |
점 찍기(프로그래머스) 문제풀이 (0) | 2024.04.05 |
테이블 해시 함수(프로그래머스) 문제풀이 (0) | 2024.04.05 |