Algorithm
- ํ ๋๋จผํธ -
๋ฌธ์
๊น์ง๋ฏผ์ N๋ช ์ด ์ฐธ๊ฐํ๋ ์คํ ํ ๋๋จผํธ์ ์ง์ถํ๋ค. ํ ๋๋จผํธ๋ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค. ์ผ๋จ N๋ช ์ ์ฐธ๊ฐ์๋ ๋ฒํธ๊ฐ 1๋ถํฐ N๋ฒ๊น์ง ๋ฐฐ์ ๋ฐ๋๋ค. ๊ทธ๋ฌ๊ณ ๋ ํ์ ์๋ก ์ธ์ ํ ๋ฒํธ๋ผ๋ฆฌ ์คํ๋ฅผ ํ๋ค. ์ด๊ธด ์ฌ๋์ ๋ค์ ๋ผ์ด๋์ ์ง์ถํ๊ณ , ์ง ์ฌ๋์ ๊ทธ ๋ผ์ด๋์์ ๋จ์ด์ง๋ค. ๋ง์ฝ ๊ทธ ๋ผ์ด๋์ ์ฐธ๊ฐ์๊ฐ ํ์๋ช ์ด๋ผ๋ฉด, ๋ง์ง๋ง ๋ฒํธ๋ฅผ ๊ฐ์ง ์ฐธ๊ฐ์๋ ๋ค์ ๋ผ์ด๋๋ก ์๋ ์ง์ถํ๋ค. ๋ค์ ๋ผ์ด๋์์ ๋ค์ ์ฐธ๊ฐ์์ ๋ฒํธ๋ฅผ 1๋ฒ๋ถํฐ ๋งค๊ธด๋ค. ์ด๋, ๋จผํธ๋ฅผ ๋งค๊ธฐ๋ ์์๋ ์ฒ์ ๋ฒํธ์ ์์๋ฅผ ์ ์งํ๋ฉด์ 1๋ฒ๋ถํฐ ๋งค๊ธด๋ค. ์ด ๋ง์ 1๋ฒ๊ณผ 2๋ฒ์ด ์คํ๋ฅผ ํด์ 1๋ฒ์ด ์ง์ถํ๊ณ , 3๋ฒ๊ณผ 4๋ฒ์ด ์คํ๋ฅผ ํด์ 4๋ฒ์ด ์ง์ถํ๋ค๋ฉด, 4๋ฒ์ ๋ค์ ๋ผ์ด๋์์ ๋ฒํธ 2๋ฒ์ ๋ฐฐ์ ๋ฐ๋๋ค. ๋ฒํธ๋ฅผ ๋ค์ ๋ฐฐ์ ๋ฐ์ ํ์ ํ ๋ช ๋ง ๋จ์ ๋๊น์ง ๋ผ์ด๋๋ฅผ ๊ณ์ ํ๋ค.
๋ง์นจ ์ด ์คํ ๋ํ์ ์ํ์๋ ์ฐธ๊ฐํ๋ค. ๊น์ง๋ฏผ์ ๊ฐ์๊ธฐ ์คํ ๋ํ์์ ์ฐ์นํ๋ ์์ฌ์ ์์ด์ง๊ณ , ๋ช ๋ผ์ด๋์์ ์ํ์์ ๋๊ฒฐํ๋์ง ๊ถ๊ธํด์ก๋ค. ์ผ๋จ ๊น์ง๋ฏผ๊ณผ ์ํ์๋ ์๋ก ๋๊ฒฐํ๊ธฐ ์ ๊น์ง ํญ์ ์ด๊ธด๋ค๊ณ ๊ฐ์ ํ๋ค. 1๋ผ์ด๋์์ ๊น์ง๋ฏผ์ ๋ฒํธ์ ์ํ์์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง ๋, ๊ณผ์ฐ ๊น์ง๋ฏผ๊ณผ ์ํ์๊ฐ ๋ช ๋ผ์ด๋์์ ๋๊ฒฐํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ์ถ๋ ฅ ์์
๋ฌธ์ ํ๊ธฐ
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on("line", function (line) {
input = line
.toString()
.split(" ")
.map((el) => +el);
}).on("close", function () {
let member = new Array(input[0]).fill(1);
member = member.map((el, idx) => (member[idx] = el + idx));
let round = 1;
while (true) {
let torf = false;
let win = [];
for (let i = 0; i < member.length; i += 2) {
let [num1, num2] = [member[i], member[i + 1]];
// ๋ง์ฝ ๋์ค ํ๋๊ฐ undefined ๋ผ๋ฉด
if (num2 === undefined) {
win.push(num1);
}
// ๋ง์ฝ ๋์ค์ ํ ๊ฐ์ด ํด๋น์๋ผ๋ฉด
else if (
[input[1], input[2]].includes(num1) ||
[input[1], input[2]].includes(num2)
) {
// ๋ง์ฝ ๋์๊ฐ ๋ชจ๋ ๊ฐ๋ค๋ฉด
if (
[input[1], input[2]].includes(num1) &&
[input[1], input[2]].includes(num2)
) {
torf = true;
break;
} else {
if ([input[1], input[2]].includes(num1)) {
win.push(num1);
} else {
win.push(num2);
}
}
} else {
win.push(num2);
}
}
if (torf) break;
round++;
member = win;
}
console.log(round);
process.exit();
});
'๊ฐ์ธ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][Node.js] 1427๋ฒ : ์ํธ์ธ์ฌ์ด๋ (0) | 2021.06.30 |
---|---|
[๋ฐฑ์ค][Node.js] 1085๋ฒ : ์ง์ฌ๊ฐํ์์ ํ์ถ (0) | 2021.06.29 |
[๋ฐฑ์ค][Node.js] 1037๋ฒ : ์ฝ์ (0) | 2021.06.27 |
[๋ฐฑ์ค][Node.js] 1026๋ฒ : ๋ณด๋ฌผ (0) | 2021.06.26 |
[๋ฐฑ์ค][Node.js] 1408๋ฒ : 24 (0) | 2021.06.25 |
๋๊ธ