Jaeilit

백준 ATM 11399 js 본문

알고리즘

백준 ATM 11399 js

Jaeilit 2022. 10. 21. 15:54
728x90

내 코드

const fs = require("fs");

const filePath =
  process.platform === "linux" ? "/dev/stdin" : "./준/누적합/11399/input.txt";

const input = require("fs")
  .readFileSync(filePath)
  .toString()
  .trim()
  .split("\n");

const N = input.shift();
const time = input.map((e) => e.split(" ").map(Number)).flat();

// [[1, 3], [2, 1], [3, 4], [4, 3], [5, 2]]

let arr = [];

time.forEach((e, i) => {
  return arr.push([i + 1, e]);
});

arr.sort((a, b) => {
  return a[1] - b[1];
});
console.log(arr);
// [[2, 1], [5, 2], [1, 3], [4, 3], [3, 4]];

let result = [];
let sum = 0;

arr.forEach((e, i) => {
  result.push((sum += e[1]));
  //   console.log(result);
  // [1, 3, 6, 9, 13];
});

let answer = result.reduce((acc, cur) => acc + cur);

console.log(answer);
// 32

 

코드 설명

인풋 3 1 4 3 2 이 순서를 사람 순서도 같이 배열로 만들었으면 좋겠다 생각했다.

 

time.forEach 로

[[1, 3], [2, 1], [3, 4], [4, 3], [5, 2]]
 
사람순서 / 시간 을 이중배열로 만들어줬고
 
시간 순서대로 정렬을 해서 최소 값을 만들어주면 된다고 생각했다.
 
[[2, 1], [5, 2], [1, 3], [4, 3], [3, 4]]
 
시간 순서대로 정렬을 해줬더니 문제에서 나온 순서와 동일 한 2 5 1 4 3 순서가 되었다.
 
이제 누적 합을 구해주면 된다고 생각했다.
 
[1, 3, 6, 9, 13];
 
사람들이 기다린 누적 시간이다.
 
이제 이걸 모두 더해주면 된다고 생각했다.
 
32

 
다른사람 코드
const arr = tc.split(' ').map(Number).sort((a, b) => a - b);

let time = 0;
let result = 0;

for(let el of arr) {
  time += el;
  result += time;
}

console.log(result);

 

다른 사람은 어떻게 풀었는가 봤는데

사람을 같이 나열하는게 아니라 그냥 1 2 3 4 5 를 누적합으로 풀었다.

 

좀 당황스러웠다..

 

 

 

 

728x90

'알고리즘' 카테고리의 다른 글

귤 고르기 js  (0) 2023.05.25
백준 스택수열 1874 js  (0) 2022.10.25
백준 구간 합 구하기 4 11659 js  (0) 2022.10.19
백준 좌표압축 18870 js  (0) 2022.10.17
백준 1181 단어 정렬 js  (0) 2022.10.13