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

[백준 node.js] 11399번_ATM 본문

알고리즘_JS/백준_Greedy

[백준 node.js] 11399번_ATM

[리우] 2020. 12. 18. 01:40

백준 그리디 알고리즘 11399번_ATM

난이도 : 실버III

 

문제 설명

입출력

 

문제 풀이 : 인출 시간의 최솟값을 구하는 것이 핵심이다. 최솟값을 구할려면 해당 줄을 오름차순 정렬을 우선적으로 해주고 반목문을 통해 누적값을 카운트 해주면된다.

 

function solution(n, list) {

    //js sort는 ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
    list.sort(function(a, b) { // 오름차순
        return a - b;
    });

    let count = 0;
    for(let i=0; i<n; i++){
        for(let j=0; j<=i; j++){
            count += list[j];
        }
    }
    console.log(count);
}

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 () {
    let n = parseInt(input[0]);
    //띄어쓰기 기준으로 배열에 넣기
    let list = input[1].split(' ').map((el) => parseInt(el));
    solution(n, list);
    process.exit();
});

* 분명히 맞는 로직이고 다른분들 코드를 비교해도 맞았는데 제출하면 틀렸다고 떠서 뭐가 문제인지 계속 찾아보고 고민해봤다. 그 결과 JS에 sort(정렬 함수)는 ASCII 문자가 정렬 기준이여서 저렇게 해줘야만 제대로된 오름차순이 되는 것을 알 수 있었다.

728x90
Comments