Computer Science/Algorithm :: 알고리즘

알고리즘 :: 가장 튼튼한 줄, 크레인

HJPlumtree 2021. 9. 24. 22:24

알고리즘 공부하며 배운내용

 

 

크레인

크레인에 달려 있는 줄을 이용해 무거운 물건을 들어올린다.

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))