๐ง codingtest/javascript 100์
๋ฌธ์ 86. ํ์ ์ด๋ฐฅ
awesomeyelim
2022. 4. 27. 10:31
728x90
ํ์ ์ด๋ฐฅ ์ง์ ๊ฐ ์๋ฆผ์ ๊ฐ ์ด๋ฐฅ์ ์ ์๋ฅผ ๋งค๊ธฐ๊ณ ๋ฎ์ ์ ์์ ์์๋ก ์ด๋ฐฅ์ ๋จน์ผ๋ ค๊ณ ํ๋ค.
์ด๋ n์์น์ ๋์ฌ์ง ์ด๋ฐฅ์ ๋จน๊ณ ์ ํ ๋ ์ ์๊ฐ ๋ช๋ฒ ์ง๋๊ฐ๊ณ ๋จน์ ์ ์์์ง ์ถ๋ ฅํ์์ค
๊ท์น
- ์ด๋ฐฅ์ ๋์ฌ์ง ์์น์์ ์ฎ๊ฒจ์ง์ง x
- ์ง๋๊ฐ ์ด๋ฐฅ์ ๋๋จธ์ง ์ด๋ฐฅ์ด ์ง๋๊ฐ ํ์ ๋ค์ ๋์์ด
- ์ด๋ฐฅ์ 1๊ฐ์ด์ ์กด์ฌ
// ์
๋ ฅ
point = [1, 1, 3, 2, 5]
dish = 3
// ์ถ๋ ฅ
5
// ์
๋ ฅ
point = [5, 2, 3, 1, 2, 5]
dish = 1
// ์ถ๋ ฅ
10
// point ๊ฐ ์ ์๋ณ ์ ์๊ฐ ๋ค์ด์๋ ๋ฐฐ์ด
// dish ๋จน๊ณ ์ํ๋ ์ ์์ ์์น
๋ฏธ๋ฆฌ ์๊ฐํด ๋ด์ผํ ๊ฒ
// ์
๋ ฅ
point = [1, 1, 3, 2, 5]
dish = 3 // ์ธ๋ฒ์งธ ์์์ ๋จน์ด์ผํจ index = dish - 1
// point ์์ ๋์์ผ๋๋ ์์
// [1, 1, 3, 2, 5] -> 5
// ์ถ๋ ฅ
5
// ์
๋ ฅ
point = [5, 2, 3, 1, 2, 5]
dish = 1
// point ์์ ๋์์ผ๋๋ ์์
// [5, 2, 3, 1, 2, 5, 5, 2, 3, 5] -> 10
// ์ถ๋ ฅ
10
๋ต
const point = [5, 2, 3, 1, 2, 5];
// 5, 2, 3, 1, 2, 5, 5, 2, 3, 5
let dish = 1; //index
function sol(point, dish) {
let answer = 0;
dish -= 1;
let s = point.slice();
// console.log(s);
s.sort((a, b) => a - b); // ์ค๋ฆ์ฐจ์์ผ๋ก ์ซ์์ ๋ ฌ
// console.log(s)
while (true) {
let p = point.shift();
if (s[0] === p) {
if (dish === 0) { // ๋ด๊ฐ ์ํ๋ ์ ์
break;
}
dish -= 1;
s.shift();
} else { // ๊ทธ๋ ์ง ์์ ์ ์
point.push(p); // ๋งจ ๋ง์ง๋ง ๋ฐฐ์ด๋ก ๋ฃ์ด์ค
if (dish === 0) {
dish = point.length - 1;
} else {
dish -= 1;
}
}
answer += 1;
}
return answer;
}
console.log(sol(point, dish));