코딩테스트 문제풀이/프로그래머스

[프로그래머스] 고득점 Kit 스택/큐 문제풀이

itaeiou 2022. 3. 13. 21:12
반응형

42586 기능개발

https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

20220313 javascript 풀이

function solution(progresses, speeds) {
    let answer = [];
    let release = 0;
    let count = 0;
    
    progresses.forEach((v, i) => {
        let day = Math.ceil( (100-v)/speeds[i] );
        
        if(count>0 && release < day) {
            answer.push(count);
            count = 0;
        }
        
        if(count === 0) {
            release = day;
        }
        count++;
    })
    answer.push(count);
    
    return answer;
}
function solution(progresses, speeds) {
    let answer = [];
    let release = [];
    
    progresses.forEach((v, i) => {
        let day = Math.ceil( (100-v)/speeds[i] );
        
        if(release.length === 0) {
            release.push(day);
        } else {
            if(release[0] >= day) {
                release.push(day);
            } else {
                answer.push(release.length);
                release = [day];
            }
        }
    })
    answer.push(release.length);
    
    return answer;
}

 

42583 다리를 지나는 트럭

https://programmers.co.kr/learn/courses/30/lessons/42583

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈

programmers.co.kr

 

20220329 javascript 풀이

function solution(bridge_length, weight, truck_weights) {
    let time = 0;
    let queue = [[bridge_length, truck_weights[0]]];
    let sum_weight = truck_weights[0];
    let i = 1;
    
    while(queue.length > 0) {
        if(queue[0][0] <= time) {
            sum_weight -= queue[0][1];
            queue.shift();
        }
        if(sum_weight + truck_weights[i] <= weight) {
            sum_weight += truck_weights[i];
            queue.push([time+bridge_length, truck_weights[i]]);
            i++;
        }
        time++;
    }
    
    return time;
}

 

반응형