[35.7 코드]
import java.util.*;
class Solution {
static public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> queue= new LinkedList<>();
int cnt=0;
int sum=0;
int truck=0;
for(int i=0;i<truck_weights.length;i++)
{
truck=truck_weights[i];
while(true)
{
// 다리에 아무 트럭도 없는 경우
if(queue.isEmpty())
{
if(weight >= sum + truck)
{
sum += truck;
queue.add(sum);
cnt++;
break;
}
}
// 다리가 꽉찬 트럭
else if(queue.size() == bridge_length)
{
sum-=queue.poll();
}
// 다리가 이동중인 트럭
else
{
if(weight >= sum + truck)
{
sum += truck;
queue.add(sum);
cnt++;
break;
}
else
{
queue.add(0);
cnt++;
}
}
// 웨이트보다 현재 truck의 sum이 큰경우 맨앞에 값을 -함
}
}
answer =cnt;
//마지막 반복문에서 끝난다는것을 인지하자
return answer+ bridge_length;
}
}
역시 어렵다 ㅠㅠ 로직 짜는데 처음에 생각이 나지 않아 2시간 걸렸고, 마지막 트럭이 반복문이 안돌아서 강제로 bridge length를 더했다 좀더 다른 코드를 참고해서 로직을 이해하고 짜야겠다.
[100점코드]
큐에넣을때 sum을 넣는게 아니라 truck을 넣어야겠다는것을 팀원이 알려줘서 풀었다... ㅠㅠ
팀원느님 감사합니다 ㅠㅠ
'프로그래머스' 카테고리의 다른 글
3번 뒤집기 (0) | 2023.01.12 |
---|---|
최대공약수와 최소공배수 (0) | 2023.01.12 |
부족한 금액 계산하기 (0) | 2023.01.10 |
콜라츠 추측 (0) | 2023.01.10 |
숫자 문자열과 영단어 (0) | 2022.12.26 |