안녕하세요

[node.js] 11399 ATM (자바스크립트) 본문

백준 자바스크립트

[node.js] 11399 ATM (자바스크립트)

sakuraop 2023. 2. 7. 22:40

ATM 문제 보기

문제 요약

ATM 기계를 이용하기 위해 2,1,3 분씩 걸리는 사람들이 있다.

 

1,2,3 순서대로 줄을 서면

1은 1분

2는 1+2분

3은 1+2+3분

 

1,2,3 각각이 소요하는 시간의 총합은 10분이 된다.

 

3,2,1 순서대로 줄을 서면

3은 3분

2는 3+2분

1은 3+2+1분

총합14분

 

걸리는 시간을 최소로 한 시간의 총합을 출력하시오.

 

 

문제 풀이

1) 오름차순으로 줄을 세운다.
const timeArray = timeString.split(" ").map(Number);
timeArray.sort((a, b) => a - b);

 

2) 맨 앞의 사람이 걸린 시간 * 남은 사람의 수 만큼의 시간을 더해나간다.

=> 맨 앞의 사람이 ATM 이용을 마쳤으면 남은 사람들에게 똑같이 반복한다.

=> 마지막 사람까지 반복한다.

let count = 0;
timeArray.forEach((time, index) => count += time * (number - index));

 

3) 총 합을 출력한다.
console.log(count)

const [number, timeString] = require("fs").readFileSync("dev/stdin").toString().split("\n");

const timeArray = timeString.split(" ").map(Number);
timeArray.sort((a, b) => a - b);

let count = 0;

timeArray.forEach((time, index) => count += time * (number - index));

console.log(count)