Algorithm
- ํ๋ฆฐํฐ ํ -
๋ฌธ์
์ฌ๋ฌ๋ถ๋ ์๋ค์ํผ ์ฌ๋ฌ๋ถ์ ํ๋ฆฐํฐ ๊ธฐ๊ธฐ๋ ์ฌ๋ฌ๋ถ์ด ์ธ์ํ๊ณ ์ ํ๋ ๋ฌธ์๋ฅผ ์ธ์ ๋ช ๋ น์ ๋ฐ์ '์์๋๋ก', ์ฆ ๋จผ์ ์์ฒญ๋ ๊ฒ์ ๋จผ์ ์ธ์ํ๋ค.
์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ์์ธ๋ค๋ฉด Queue ์๋ฃ๊ตฌ์กฐ์ ์์ฌ์ FIFO - First In First Out ์ ๋ฐ๋ผ ์ธ์๊ฐ ๋๊ฒ ๋๋ค.
ํ์ง๋ง ์๊ทผ์ด๋ ์๋ก์ด ํ๋ฆฐํฐ๊ธฐ ๋ด๋ถ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ์๋๋ฐ, ์ด ํ๋ฆฐํฐ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ธ์๋ฅผ ํ๊ฒ ๋๋ค.
1. ํ์ฌ Queue์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์์ '์ค์๋'๋ฅผ ํ์ธํ๋ค.
2. ๋๋จธ์ง ๋ฌธ์๋ค ์ค ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ๋๋ผ๋ ์๋ค๋ฉด, ์ด ๋ฌธ์๋ฅผ ์ธ์ํ์ง ์๊ณ Queue์ ๊ฐ์ฅ ๋ค์ ์ฌ๋ฐฐ์น ํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฐ๋ก ์ธ์๋ฅผ ํ๋ค.
์๋ฅผ ๋ค์ด Queue์ 4๊ฐ์ ๋ฌธ์ (A B C D)๊ฐ ์๊ณ , ์ค์๋๊ณผ 2 1 4 3 ๋ผ๋ฉด C๋ฅผ ์ธ์ํ๊ณ , ๋ค์์ผ๋ก D๋ฅผ ์ธ์ํ๊ณ A, B๋ฅผ ์ธ์ํ๊ฒ ๋๋ค.
์ฌ๋ฌ๋ถ์ด ํ ์ผ์, ํ์ฌ Queue์ ์๋ ๋ฌธ์์ ์์ ์ค์๋๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ค ํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์์๋ด๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ์์ ์์์ C๋ฌธ์๋ 1๋ฒ์จฐ๋ก, A๋ฌธ์๋ 3๋ฒ์งธ๋ก ์ธ์๋๊ฒ ๋๋ค.
์ ์ถ๋ ฅ ์์
๋ฌธ์ ํ๊ธฐ
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
let arr = input
.slice(1, input.length)
.map((el) => el.split(" ").map((el) => Number(el)));
let printBox = [];
for (let i = 0; i < arr.length; i += 2) {
arr[i + 1][arr[i][1]] = String(arr[i + 1][arr[i][1]]);
printBox.push(arr[i + 1]);
}
for (let i = 0; i < printBox.length; i++) {
let count = 1;
let box = printBox[i];
let test = printBox[i].map((el) => Number(el));
while (true) {
let maxIndex = test.indexOf(Math.max(...test));
if (maxIndex !== 0) {
test = test.slice(maxIndex, test.length).concat(test.slice(0, maxIndex));
box = box.slice(maxIndex, box.length).concat(box.slice(0, maxIndex));
}
if (typeof box[0] === "string") {
console.log(count);
break;
} else {
test.shift();
box.shift();
count++;
}
}
}
'๊ฐ์ธ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][Node.js] 1978๋ฒ : ์์ ์ฐพ๊ธฐ (0) | 2021.07.24 |
---|---|
[๋ฐฑ์ค][Node.js] 1977๋ฒ : ์์ ์ ๊ณฑ์ (0) | 2021.07.23 |
[๋ฐฑ์ค][Node.js] 1934๋ฒ : ์ต์๊ณต๋ฐฐ์ (0) | 2021.07.19 |
[๋ฐฑ์ค][Node.js] 1929๋ฒ : ์์ ๊ตฌํ๊ธฐ (0) | 2021.07.18 |
[๋ฐฑ์ค][Node.js] 1924๋ฒ : 2007๋ (0) | 2021.07.17 |
๋๊ธ