avatar
Published on

Codility - Cyclic Rotation

Author
  • avatar
    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๋Š” ์›๋ณธ ๋ฐฐ์—ด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

https://app.codility.com/demo/results/trainingYUK5SH-UVZ/