알고리즘 공부하며 배운내용
크레인
크레인에 달려 있는 줄을 이용해 무거운 물건을 들어올린다.
200kg까지 들어올릴 수 있는 줄을 3개 사용하면 600kg을 들 수 있다.
줄의 강도가 섞이면 약한 줄에 맞춰진다.
100kg 150kg 두 줄을 같이 쓰면 200kg까지 들 수 있다.
가지고 있는 줄이 올릴 수 있는 무게가 들어오면,
들어올릴 수 있는 가장 무거운 무게를 알아보자
들어오는 값
가지고 있는 줄이 올릴 수 있는 무게
예)
100 300 400
보여줄 값
주어진 줄로 올릴 수 있는 최대 무게
예)
600
핵심 포인트
1줄을 사용하면 가장 강도가 센 줄을 사용한다.
2줄을 사용하면 첫 번째로 강도가 센 줄과 두 번째로 센 줄을 사용한다, 무게는 두 번째 줄이 기준이 되겠고
i개를 사용하면 i 번째까지 줄을 사용하고, i 번째 줄이 기준
무거운 줄부터 정렬하고 해보면 되겠다.
코드
// VSCode에서 JavaScript 테스트 하기위한 코드
// 메모장에 테스트 케이스 넣고 crain.txt로 저장했다.
let fs = require('fs')
// 값을 가져올 때 아예 무거운 순서대로 정렬했다.
let input = fs.readFileSync('crain.txt').toString().split(' ').sort((a, b) => b - a)
function showWeight(kg) {
let maxWeight = 0
let sum = 0
// i번째 줄이 기준으로 선택된 줄 수만큼 곱셈
for(let i = 0; i < kg.length; i++) {
sum = kg[i] * (i + 1)
// 무거운 줄 기억
maxWeight = Math.max(maxWeight, sum)
}
return maxWeight
}
console.log(showWeight(input))
'Computer Science > Algorithm :: 알고리즘' 카테고리의 다른 글
알고리즘 :: 줄 세우기, 병합정렬 응용 (0) | 2021.09.26 |
---|---|
알고리즘 :: 마라톤, Merge Sort [푸는중] (0) | 2021.09.26 |
알고리즘 :: 0과1 문자열 압축, 재귀함수, 분할정복 (0) | 2021.09.24 |
알고리즘 :: 손에 손잡고, 더블 정렬 [함수 개선?] (0) | 2021.09.24 |
알고리즘 :: 계단 오르기, 피보나치, 메모이제이션 (0) | 2021.09.24 |