프론트엔드 개발자의 기록 공간

[백준 node.js] 2217번_로프 본문

알고리즘_JS/백준_Greedy

[백준 node.js] 2217번_로프

[리우] 2020. 12. 25. 02:06

백준 그리디 알고리즘 2217번_로프

난이도 : 실버IV

 

문제 설명

입출력

문제 풀이 : 주어진 로프의 중량 순으로 오름차순 정렬을 시행한다.

이후 반복문을 통해 순서대로 n번째 중량과 n번부터 마지막까지 로프의 개수를 곱했을때 최대값을 저장한다.

예를들어 [10,15,20,25] 중량의 4개의 로프가 있다면 순서대로 10 * 4개 중량, 15 * 3개, 20 * 2개, 25 * 1개 에서 최대값이 정답이다.

왜냐하면 여러개의 로프가 있을때 최소 중량 기준으로 들 수 있으므로 뒤로갈수록 작은 로프는 빼주고 계산해야한다.

 

// 실버4 로프
function solution(n, list) {
	// js 정렬방법
    list.sort(function(a, b) {
        return a - b;
    })

    let result = 0;
    //로프중 최대값 찾기
    for(let i=0; i<n; i++){
        if(result < list[i] * (n-i)){
            result = list[i] * (n-i);
        }
    }
    console.log(result);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

let input = [];
rl.on("line", function (line) {
    //여러줄 입력
    input.push(line)
}).on("close", function () {

    input = input.map((el) => parseInt(el));
    let n = input[0];
    let list = input.slice(1);
    solution(n, list);
});

 

* 이전 작성된 글에서 말했다싶이 js에서 sort는 ASCII 문자가 정렬 기준이여서 sort함수를 이용하여 직접 구현해줘야한다. 

728x90
Comments