const input = require('fs').readFileSync('/dev/stdin').toString().split("\n").map(v => (v.replace("\r", "")));
const arr = input.map(v => v.split(" "));
const N = arr[0][0];
const M = arr[0][1];
let baskets = [];
let baskets2 = [];
for (let i = 1; i <= N; i++) {
baskets.push(i);
baskets2.push(i);
}
const rotateArr = (start, mid, end) => {
let rotateNum = [];
rotateNum = baskets.splice(start - 1, end - start + 1);
const originMidIndex = baskets2[mid - 1];
const newMidIndex = rotateNum.findIndex(v => v === originMidIndex);
let midNums = rotateNum.splice(newMidIndex, rotateNum.length - newMidIndex);
let finishedRotateNums = [...midNums, ...rotateNum];
baskets2.splice(start - 1, end - start + 1, ...finishedRotateNums);
return baskets2;
}
for (let i = 1; i <= M; i++) {
let start = +arr[i][0];
let end = +arr[i][1];
let mid = +arr[i][2];
baskets = rotateArr(start, mid, end).map(v => v);
baskets2 = baskets.map(v => v);
}
console.log(...baskets);
์ด๋ป๊ฒ ํด์ผํ ์ง ์๊ฐ์ด ์๋๊ณ , ์ ์๋ผ์ ํ๋ค ํ๋ฒ ํฌ๊ธฐํ์๋ค. ๐คจ๐ซ๐คฏ
๊ทธ๋ฌ๋ค ์ค๋์ splice ํจ์๊ฐ ์๊ฐ๋ฌ๋ค.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
<splice ํจ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ>
๋ฐฐ์ด.splice( a , b, c );
a = ์์index
b = ์๋ผ๋ผ ๊ฐ์ (0์ ์ฐ๋ฉด ์ด๋ค ์์๋ ์ ๊ฑฐ๋์ง ์์)
c = ์๋ผ๋ธ ๋ถ๋ถ์ ๋ฃ์ ์์ (์์ฐ๋ฉด ์ ๊ฑฐํ๊ธฐ๋ง ํจ)
return ๊ฐ: ์๋ผ๋ธ ๋ฐฐ์ด.
splice ํ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋ ์ํ.
์์)
const food = ['๐', '๐', '๐ฅ', '๐ข'];
food.splice(1, 0, '๐');
// index 1 ๋ถํฐ 0๊ฐ ์ญ์ , ๊ทธ ์๋ฆฌ(index 1 ์๋ฆฌ)์ ๐ ์ ๋ฃ์
console.log(food);
// ["๐", "๐", "๐", "๐ฅ", "๐ข"] ๋ฐฐ์ด ๋ณํ๋จ.
food.splice(1, 3);
// [ '๐', '๐', '๐ฅ'] //return ๊ฐ์. ๋ฐ๋ก ์์ ๋ฐฐ์ด์์ index 1 ๋ถํฐ 3๊ฐ ๋๋ ค๋
console.log(food);
// [ '๐', '๐ข' ] //๋จ์ ๋ฐฐ์ด food ์ ์ํ
<ํ์ด ๊ณผ์ >
์ ์ฒด ๋ฐ๊ตฌ๋ ํจ์์์ splice ํจ์๋ฅผ ์ด์ฉํด ํ์ ์ํฌ ๋ถ๋ถ์ ๋จผ์ ๊ฐ์ ธ์จ ํ,
๊ฐ์ ธ์จ ๋ฐฐ์ด์ mid ๋ฅผ ์ค์ฌ์ผ๋ก ๋ถ๋ฆฌํด์ค ๋ค์์ ํฉ์ณ์คฌ๋ค.
์ด ๋, ์ฃผ์ด์ง mid ์ ์๋ ์๋ ํจ์์์์ N๋ฒ ์งธ ๋ฐ๊ตฌ๋์ด๊ธฐ ๋๋ฌธ์,
์๋ baskets ๋ฐฐ์ด์์, index mid -1 ์ด ์ด๋ค ์ซ์์ธ์ง ์ฐพ์ ํ,
ํ์ ์ํค๋ ค๊ณ ๋ผ์ด์ค ๋ฐฐ์ด์์ ๊ทธ ์์ index๋ฅผ ์ฐพ์ ์ค์ฌ์ผ๋ก ์ผ์๋ค.
baskets๊ณผ ๋๊ฐ์ ๋ฐฐ์ด baskets2 ๋ฅผ ๋ง๋ค์ด์คฌ๋ค.
๊ทธ๋ฅ ํ ๋น์ ์์ ๋ณต์ฌ๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ map ํจ์๋ก ์๋ก์ด ํจ์๋ฅผ ํ ๋นํด์คฌ๋ค. (๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์)
for ๋ฌธ์ผ๋ก ์ด ๋ชจ๋ ๊ณผ์ ์ ๊ฑฐ์น ํ,
๊ฐ์ฅ ๋ง์ง๋ง์ ๋์ค๋ baskets ๋ฐฐ์ด์ ํผ์ณ์ ์ถ๋ ฅํ๋ค.
ํ์ด๋ด์ ๋งค์ฐ ์์์ํ๋ค!