백준 11399번 Node.js 풀이

버건디·2024년 1월 13일
0

백준

목록 보기
62/75
post-thumbnail

문제 링크


- 내 풀이

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

const N = Number(input.shift());

const numArr = input[0]
  .split(" ")
  .map(Number)
  .sort((a, b) => a - b);

let answer = 0;

for (let i = 0; i < N; i++) {
  let memoizedSum = 0;

  for (let j = i - 1; j >= 0; j--) {
    memoizedSum += numArr[j];
  }

  answer += memoizedSum;
  answer += numArr[i];
}

console.log(answer);

- 다른 풀이

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);
let arr = input[1].split(' ').map(Number);

arr.sort((a, b) => a - b);

let answer = 0;

let summary = 0;

for (let i = 0; i < n; i++) {
  
summary += arr[i];
  
answer += summary;
  
}
  
console.log(answer);

이 풀이가 시간복잡도가 O(n)이어서 더 효율적인 풀이 인것같다.

summary 라는 변수에 지금까지의 값을 더해주면서, 또 answer에 summary 를 더해주면 된다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글