๋ฌธ์ ๋งํฌ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์๊ถ๋ํ
๋ฌธ์ ์ค๋ช ์นด์นด์ค๋ฐฐ ์๊ถ๋ํ๊ฐ ์ด๋ ธ์ต๋๋ค. ๋ผ์ด์ธ์ ์ ๋ฒ ์นด์นด์ค๋ฐฐ ์๊ถ๋ํ ์ฐ์น์์ด๊ณ ์ด๋ฒ ๋ํ์๋ ๊ฒฐ์น์ ๊น์ง ์ฌ๋ผ์์ต๋๋ค. ๊ฒฐ์น์ ์๋๋ ์ดํผ์น์ ๋๋ค. ์นด์นด์ค๋ฐฐ ์๊ถ๋ํ ์ด์์์
programmers.co.kr
๊ธฐ์ตํด์ผํ ๋ถ๋ถ
์๋ณธ ๋ฐฐ์ด์ ์ ์งํ๊ธฐ ์ํด์ spread๋ฅผ ์ ์ด์ฉํ์. (newArr = [...arr])
์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ชจ๋ ์ํํ๋ฉฐ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
sort๋ฅผ ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
๋ฐฐ์ด์ element๋ณ๋ก ๋น๊ต๋ฅผ ํด์ค์ผํ๊ณ , ๋ค์์๋ถํฐ ๋ฐฐ์ดํ๋ ๋ฐฉ๋ฒ๋ ์ตํ
// ๋ชฉํ : ๋ผ์ด์ธ์ด ๊ฐ์ฅ ํฐ ์ ์ ์ฐจ์ด๋ก ์ฐ์นํ ๋ ๋ง์ถ ๊ณผ๋
์ ๋ฐฐ์ด
// ๋ง์ฝ ๋ฌด์กฐ๊ฑด ์ง๊ฑฐ๋ ๋น๊ธฐ๋ ๊ฒฝ์ฐ๋ -1 return;
// ์ด๊ธธ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์ฌ๋ฌ๊ฐ์ง๋ผ๋ฉด ๊ฐ์ฅ ๋ฎ์ ์ ์๋ฅผ ๋ ๋ง์ด ๋งํ ๊ฒฝ์ฐ๋ฅผ return (2๋ฐ 3์ ๋ณด๋ค 1๋ฐ 1์ , 1๋ฐ 2์ ์ด ์ฐ์ )
// ๊ฐ์ ๊ฐฏ์๋ฅผ ๋ง์ถ๋ฉด ์ดํผ์น๊ฐ ๊ทธ ์ ์๋ฅผ ๊ฐ์ ธ๊ฐ
// ๋๋ค ๋ง์ถ์ง ๋ชปํ๋ฉด ์๋ฌด๋ ๊ทธ ์ ์๋ฅผ ๊ฐ์ ธ๊ฐ์ง ๋ชปํจ
// max๋ฅผ ์ค์ ํด์ ๊ณ์ํด์ max๊ฐ์ ์
๋ฐ์ดํธํ๊ณ max๊ฐ ๊ฐ์๋ ์์์ ๊ฐฏ์๋ฅผ ๋น๊ตํ๋ฉฐ ์งํ
let maxRyanResult = []
function solution(n, info) {
var answer = [];
let ryanInfo = new Array(info.length).fill(0);
makeRyanInfo(n, ryanInfo, info, 0)
answer = maxRyanResult.map(e => e[0])
answer.sort((a,b) => sortLowScore(a,b));
return answer.length === 0 ? [-1] : answer[0];
}
// ํ์ด ๋ฐฐ์ด(info) ๊ตฌํ๊ธฐ
const makeRyanInfo = (n, ryanInfo, apeachInfo, startElement) => {
if(n === 0){
const [ryanScore, apeachScore] = sumScore(ryanInfo, apeachInfo)
let scoreGap = ryanApeachScoreGap(ryanScore, apeachScore);
if(scoreGap > 0){
if(maxRyanResult.length === 0) maxRyanResult.push([ryanInfo, scoreGap])
else{
if(maxRyanResult[0][1] < scoreGap){
maxRyanResult = [[ryanInfo, scoreGap]]
}else if(maxRyanResult[0][1] === scoreGap){
maxRyanResult.push([ryanInfo, scoreGap])
}
}
}
return;
}
for(let i = startElement; i<ryanInfo.length; i++){
const newRyanInfo = [...ryanInfo];
newRyanInfo[i] += 1;
makeRyanInfo(n-1, newRyanInfo, apeachInfo, i)
}
return;
}
// ๋ผ์ด์ธ๊ณผ ์ดํผ์น์ ๋ฐฐ์ด์ ๋ฐ์์์ score์ ๊ตฌํ๊ณ ๊ฐ๊ฐ์ score์ ๋ฐํ
const sumScore = (ryan, apeach) => {
let ryanScore = 0;
let apeachScore = 0;
for (let i = 0; i < ryan.length; i++){
if(ryan[i] > apeach[i]){
ryanScore += (10-i);
}else if(apeach[i] >= ryan[i] && apeach[i] !== 0){
apeachScore += (10-i)
}
}
return [ryanScore, apeachScore];
}
// ๋ผ์ด์ธ score์ ์ดํผ์น score์ ๋น๊ตํ์ฌ ์ฐจ์ด๋ฅผ ๋ฐํ
const ryanApeachScoreGap = (ryanScore, apeachScore) => {
return ryanScore - apeachScore;
}
// ๋ฐฐ์ด์ ๋ฎ์ ์ ์๊ฐ ๋ง์์์ผ๋ก ์ ๋ ฌ
const sortLowScore = (a, b) => {
for(let i = a.length-1; i >= 0; i--){
if(a[i] === b[i]) continue;
return b[i] - a[i]
}
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์นดํซ (42842) (0) | 2022.05.14 |
---|---|
[Javascript] H-Index (42747) (0) | 2022.05.14 |
[Javascript] ํ๋ฆฐํฐ (42587) (0) | 2022.05.06 |
[Javascript] ๊ดํธ ๋ณํ (60058) (0) | 2022.05.06 |
[Javascript] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (12953) (0) | 2022.05.05 |