JellyApple 2024. 7. 2. 21:47

문제 링크 : https://www.acmicpc.net/problem/11399

문제 티어 : 실버 4

문제 유형 : 그리디 알고리즘 

문제 풀이 

1) N을 입력 받고 그 아래 N 만큼 숫자를 입력 받는다. 

2) Pi가 주어지고 Pi가 작은 순대로 index를 정렬 해준다.  즉, 오름차순 정렬 해줌

3) 그 후 이전에 것들과 함께 더 해줌 

 

문제 코드 

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let n = Number(input[0]);

// Pi 입력 받음
let arr = input[1].split(" ").map(Number);

 // arr 오름차순 정렬
 arr.sort((a,b)=>a-b);
 
 // 대기 시간 더해줌
 let sum = 0;  // 현재까지 대기 시간 
 let answer = 0; // 총 대기 시간 
 
 for(let i=0;i<n;i++){
    sum += arr[i]; // sum에 지금 기다린 대기 시간 더해줌
    answer += sum; // answer에 총 대기 시간을 더해줌
}

// 총 대기 시간 answer 출력
console.log(answer);

 

시간복잡도 : O(N)