본문 바로가기

프로그래머스

다리를지나는트럭

728x90

[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을 넣어야겠다는것을 팀원이 알려줘서 풀었다... ㅠㅠ

 

팀원느님 감사합니다 ㅠㅠ

728x90

'프로그래머스' 카테고리의 다른 글

3번 뒤집기  (0) 2023.01.12
최대공약수와 최소공배수  (0) 2023.01.12
부족한 금액 계산하기  (0) 2023.01.10
콜라츠 추측  (0) 2023.01.10
숫자 문자열과 영단어  (0) 2022.12.26