- Published on
Codility - Cyclic Rotation
- Author
- Name
- yceffort
2-1 Cyclic Rotation
๋ฌธ์
๋ฐฐ์ด A๊ฐ ์ฃผ์ด์ง๊ณ ์ด๋ฅผ K๋ฒ ๊ฐ ๋ฐฐ์ด์ ์์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์์ผฐ์ ๋, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ์์ค.
A = [3, 8, 9, 7, 6]
K = 3
[3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7]
[6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9]
[7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8]
ํ์ด
function solution(A, K) {
// ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ฌ์ผ ํ๋ ํ์
const sliceTimes = K % A.length
// ํ์ ํ ํ์๊ฐ ์๊ฑฐ๋, ํ์ ์ ๋ฐฐ์ด ๊ธธ์ด ๋งํผ ํ๋ค๋ฉด ๊ทธ๋ฅ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค.
if (sliceTimes === 0 || sliceTimes === A.length) {
return A
}
// ๋ฐฐ์ด์ ์ ์๋ผ์ ๋ฆฌํดํ๋ค.
return [
...A.slice(A.length - sliceTimes),
...A.slice(0, A.length - sliceTimes),
]
}
ํด์ค
๋ฌธ์ ์ ๊ด๋ จ์ด ์์ง๋ง, splice๋ ์๋ณธ ๋ฐฐ์ด์ ์ํฅ์ ๋ฏธ์น๊ณ , slice๋ ์๋ณธ ๋ฐฐ์ด์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.