친구가 이런식으로 만들어 달라고 요청했다
중복조합으로 구했다
let input = `[231A01] 100
[231A02] 200
[231A03] 300
[231A04] 400
[231A05] 500
[231A06] 600
[231A07] 700`
let price = `800
5000
10000
11000`
function solution1(input, price) {
let inputArr = trans(input)
let priceArr = price.split('\n').map(ele => parseInt(ele.trim()))
priceArr.forEach(price => {
let result = []
function repeat(sum, tempArr, index) {
if (sum === price) return result.push(tempArr.slice())
else if (sum > price) return
for (let i = index; i < inputArr.length; i++) {
repeat(sum + inputArr[i][1], tempArr.concat(inputArr[i][0]), i)
}
}
repeat(0, [], 0)
result = result.map(ele => ele.join('+'))
console.log(`price가 ${price}일 때, 총 경우의 수 : ${result.length}`)
result.forEach(ele => console.log(ele))
console.log('------------------')
})
function trans(str) {
return str
.split('\n')
.map(ele => ele.split(/ +/g))
.map(ele => [ele[0], parseInt(ele[1])])
}
}
'Project > mini-project' 카테고리의 다른 글
티스토리 글쓰기 버튼 만들기 (0) | 2022.04.26 |
---|---|
척추 세포 데이터의 정렬 (0) | 2022.04.04 |