백준 1049번 - 기타줄 (S4, JS, Greedy)

j_wisdom_h·2023년 2월 6일
0

CodingTest

목록 보기
35/58

백준 1049번 - 기타줄 (S4, JS, Greedy)

1. 문제해설

2. 입출력 예 & 제한사항

3. Solution

const fs = require('fs');
const input = fs.readFileSync('test.txt').toString().trim().split('\n');
const [N, M] = [...input[0].split(' ')];
const arr = [...input.slice(1)];
const packages = 6;

function solution(N, M, arr) {
	let package = [];
	let single = [];
    
	arr.forEach((a) => {
		const [p, s] = a.split(' ').map(Number);
		package = [...package, p]; // 6개 패키지 가격 배열
		single = [...single, s];   // 한 개 가격 배열
	});
	// 각 배열의 최솟값
	let [singleMin, packageMin] = [Math.min(...single), Math.min(...package)];
  
	// packages(===6)보다 적은 개수의 기타줄이 필요하다면
	if (packages > N) {
      	// 1개 * (필요한개수) 와 패키지(6개)를 비용 중 더 싼 것
		if (singleMin * N <= packageMin) {
			return singleMin * N;
		} else {
			return packageMin;
		}
	} else {
    // packages(===6)이상 개수의 기타줄이 필요하다면
    // 단일가격 * 필요한 개수, 패키지 , 단일 + 패키지 가격중 가장 싼 것
		return Math.min(
			singleMin * N,
			packageMin * Math.ceil(N / packages),
			singleMin * (N % packages) + packageMin * parseInt(N / packages),
		);
	}
}

console.log(solution(N, M, arr));
profile
뚜잇뚜잇 FE개발자

0개의 댓글