๐ฅ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/150368
๐ฅํ์ด
์ผ๋จ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ณด๋ฉด emoticon์ ๊ฐฏ์๋ ์ต๋ 7๊ฐ ์ ๋์ด๊ณ ํ ์ธ์จ์ 4๊ฐ์ง ์ข ๋ฅ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ชจํฐ์ฝ์ด ๊ฐ์ง ์ ํ ์ธ์จ ๊ฐ์ง์๋ ์ต๋ 4**7 ์ ๋์ด๋ฏ๋ก ๊ฐ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ๊ฐ์ฐํ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด๋ ๋ฌด๋ฆฌ์๋ค๊ณ ํ๋จํ์๋ค.
์ผ๋จ calculator ํจ์๋ ์ ์ ์ ๋ณด(user_arr)์ ์ด๋ชจํฐ์ฝ๋ค์ ๊ฐ๊ฒฉ๊ณผ ํ ์ธ์จ์ ๋ด์ 2์ฐจ์ ๋ฐฐ์ด(emoticons_arr)์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ก์ ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ [๊ฐ์ ์์,์ด๋ชจํฐ์ฝ ๊ตฌ๋งค๊ธ์ก] ์ return ํ๋ ํจ์๋ฅผ ์ ์ํ์๋ค. (๋์ค์ ์ด์ฉ)
์ด๋ชจํฐ์ฝ๋ค์ด ๊ฐ์ง ์ ์๋ ๋ชจ๋ ํ ์ธ์จ์ ๊ฒฝ์ฐ๋ฅผ ์ฌ๊ทํจ์(recursive)๋ฅผ ํตํด ์ค์ ํ๊ณ calculator ํจ์๋ฅผ ํตํด ์ฃผ์ด์ง ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์์ [๊ฐ์ ์์, ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค๊ธ์ก์] ๋์ถํ์ฌ ์ด๋ฅผ ๋ฐฐ์ด์ ๋ฃ์๊ณ ๋ง์ง๋ง์ sort๋ฅผ ํตํด ์ ๋ ฌํ๋ค ๊ฐ์ฅ ๊ฐ์ ์์๊ฐ ๋ง๊ณ ๊ตฌ๋งค๊ธ์ก์ด ๋ง์ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค. ( ์ฌ์ค array์ push ํ๊ณ ๋ง์ง๋ง์ ์ํ ํ์ง ์์๋ ๋๋ค. ๊ทธ๋ฅ ๋ฐ๋ก๋ฐ๋ก ๋น๊ตํ์ฌ ๋ต์ ๊ณ์ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ... )
function solution(users, emoticons) {
// [ [์ด๋ชจํฐ์ฝ ๊ฐ๊ฒฉ, ์ด๋ชจํฐ์ฝ ํ ์ธ์จ], ... ] ํํ์ ๋ฐฐ์ด ์์ฑ ( ์ถํ ์ด์ฉํ๊ธฐ ์ํด )
// ์ด๋ชจํฐ์ฝ ํ ์ธ์จ์ ์ถํ ๊ฒฐ์ ๋๋ฏ๋ก undefined๋ก ์ธํ
let converted_emoticons = emoticons.map((price)=>[price,undefined])
// user_arr => [[์ต์ํ ์ธ์จ,์ด๋ชจํฐ์ฝ์ต๋๊ตฌ๋งค๊ธ์ก], ...] ํํ์ ๋ฐฐ์ด
// emoticons_arr=> ์ด๋ชจํฐ์ฝ์ ํ ์ธ์จ๊ณผ ๊ฐ๊ฒฉ์ ๋ด์ ์ด์ฐจ์ ๋ฐฐ์ด
// ์ 2๊ฐ์ ๋งค๊ฐ๋ณ์์ฃผ์ด์ก์ ๋ [์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์, ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค๊ธ์ก] ์ return ํ๋ ํจ์
const calculator=(user_arr,emoticons_arr)=>{
let result =[0,0]
for(const user of user_arr){
let [min_percent,limit]=user
let total_price = 0
emoticons_arr.forEach(([price,sale_percent])=>{
if(min_percent<=sale_percent){
total_price+=price*(100-sale_percent)*0.01
}
})
if(total_price>=limit){
result[0]+=1
}else{
result[1]+=total_price
}
}
return result
}
const answer_arr = []
const recursive=(set_index,arr)=>{
if(set_index===emoticons.length){
// ์ด๋ [๊ฐ์
์์, ์ด๋ชจํฐ์ฝ ๋งค์ถ์ก] ์ ๋์ถํ์ฌ answer_arr์ push
answer_arr.push(calculator(users,arr))
return
}
[10,20,30,40].forEach((sales_percent)=>{
let copied = arr.map((item)=>{ return [...item]})
copied[set_index][1]=sales_percent
recursive(set_index+1,copied)
})
}
recursive(0,converted_emoticons)
// ์ ๋ ฌ ( ๊ตฌ๋
์์ ์ต๋, ๊ตฌ๋งค๊ธ์ก ์ต๋ ์ธ์์ผ๋ก )
answer_arr.sort((a,b)=>{
if(b[0]===a[0]) return b[1]-a[1]
return b[0]-a[0]
})
return answer_arr[0]
}
๐ฅํ๊ธฐ
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฌ์ํ ์ค์๊ฐ ์์๋ ๋ฐ ์ด๊ฒ ๋๋ฌธ์ ์ข ์๊ฐ์ ์๋ชจํ๋ค. ๋ฐ๋ก ํ ์ธ์จ์ด๋ค.
30% ํ ์ธ์ผ ๊ฒฝ์ฐ ๋น์ฐํ
ํ ์ธ๋ ๊ฐ๊ฒฉ์ = ๊ธฐ๋ณธ๊ฐ๊ฒฉ * (100-ํ ์ธ์จ) * 0.01 ์ด๋ ๊ฒ ํด์ผ๋๋๋ฐ
ํ ์ธ๋ ๊ฐ๊ฒฉ = ๊ธฐ๋ณธ๊ฐ๊ฒฉ * ํ ์ธ์จ * 0.01 ์ด๋ ๊ฒ ๊ธฐ์ฌํด๋ฒ๋ ธ๋ค -_- ๊ทธ๋๋๊ณ ํ์ฐธ์ ์ ๊ณ์ฐ์ด ํ๋ฆฌ์ง ํด๋งธ๋๋ฐ... ๋ค์๋ถํฐ๋ ์ด๋ฐ ์ ์ค์๋ ํ์ง ์๋๊ฒ ์ข๊ฒ ๋ค.
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฆฌ์ฝ์ณ ๋ก๋ด (0) | 2024.08.25 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ดํธ ๋ณํ ( 2020 KAKAO BLIND RECRUITMENT ) (0) | 2024.08.24 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋จ์ด๋ณํ (0) | 2024.08.24 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์์ (0) | 2024.08.15 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฌด์ธ๋ ์ฌํ (0) | 2024.08.11 |