[이코테 by Javascript] Greedy - 큰 수의 법칙

YJ·2024년 3월 18일
0

🖍️ 문제풀이

const fs = require('fs');
const inputData = fs.readFileSync('example.txt').toString().split('\n');
const numList = inputData[1].toString().split(' ');
// const arr = inputData[0].toString().split(' ');
// const N = Number(arr[0]);
// const M = Number(arr[1]);
// const K = Number(arr[2]);
const [N, M, K] = inputData[0].toString().split(' ').map(Number);

let answer = 0;

// 오름차순으로 정렬
numList.sort();

const F = numList[N - 1]; // 가장 큰 수
const S = numList[N - 2]; // 두번째로 큰 수

// 가장 큰 수를 더하는 횟수
const fCount = K * (Math.floor(M / (K + 1))) + M % (K + 1)

// 두번째로 큰 수를 더하는 횟수
// const sCount = Math.floor(M / (K + 1))
const sCount = M-fCount

// 총합
answer = F*fCount + S*sCount

console.log(answer);

🐣 구조분해할당(Destructing) + map 조합

  • Destructing 문법: 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 표현식
  • map: 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환하는 메소드

코딩테스트 뿐만 아니라 실무에서도 요긴하게 자주 써먹은 조합이다. 기억해두자!

const arr = ['1', '2', '3'];
const [num1, num2, num3] = arr.map(Number);
console.log(num1) // 결과값: 1
profile
기록 안해놓잖아? 그럼 나중에 싹 다 잊어버리는 거예요 명심하기로 해요^.^

0개의 댓글