์ ์ ๋ฐฐ์ด nums๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก k๋ฒ ํ์ ์ํค๋ ๋ฌธ์ ์
๋๋ค. k๋ ์์๊ฐ ์๋ ์ ์์
๋๋ค.
๐ ์ ์ฝ์กฐ๊ฑด
1 <= nums.length <= 10^5
-2^31 <= nums[i] <= 2^31 - 1
0 <= k <= 10^5
- in-place ์์ : ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ์ง ์๊ณ ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ง์ ์์
๐ก ์์
- Input: nums = [1,2,3,4,5,6,7], k = 3
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
Step 1: ๋ฌธ์ ์ดํดํ๊ธฐ
- ์์ ์์๋ก ์ง์ ํ์ ๊ณผ์ ์ดํด๋ณด๊ธฐ
- [1,2,3,4], k = 2 ์ธ ๊ฒฝ์ฐ
- 1ํ์ : [4,1,2,3]
- 2ํ์ : [3,4,1,2]
- ํจํด ๋ฐ๊ฒฌ: k๋ฒ ํ์ ํ๋ฉด ๋ค์์ k๊ฐ์ ์์๊ฐ ์์ผ๋ก ์ค๊ฒ ๋จ
Step 2: ์ ๊ทผ ๋ฐฉ๋ฒ
Step 3: ์ฝ๋ ์ค๊ณ
- k ์ต์ ํํ๊ธฐ
- k๋ฅผ ๋ฐฐ์ด ๊ธธ์ด๋ก ๋๋ ๋๋จธ์ง ๊ตฌํ๊ธฐ
- ๋ค์์ k๊ฐ ์์ ์๋ฅด๊ธฐ
- splice(-k, k)๋ก ๋ง์ง๋ง k๊ฐ ์์ ์ถ์ถ
- ์๋ฅธ ์์๋ค์ ๋ฐฐ์ด ์์ ์ถ๊ฐ
- unshift()๋ก ์ถ์ถํ ์์๋ค์ ์์ ๋ถ์ด๊ธฐ
Step 4: ์ฝ๋ ๊ตฌํ
var rotate = function(nums, k) {
// k ์ต์ ํ
const optimizedK = k % nums.length;
// ๋ค์์ k๊ฐ ์์ ์๋ฅด๊ธฐ
const deletedArr = nums.splice(-optimizedK, optimizedK);
// ์๋ฅธ ์์๋ค์ ๋ฐฐ์ด ์์ ์ถ๊ฐ
nums.unshift(...deletedArr);
};
๋ฌธ์ ์ค๋ช | ๋ฐฐ์ด ํ์ (Array Rotation)
์ ์ ๋ฐฐ์ด nums๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก k๋ฒ ํ์ ์ํค๋ ๋ฌธ์ ์ ๋๋ค. k๋ ์์๊ฐ ์๋ ์ ์์ ๋๋ค.
๐ ์ ์ฝ์กฐ๊ฑด
1 <= nums.length <= 10^5-2^31 <= nums[i] <= 2^31 - 10 <= k <= 10^5๐ก ์์
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
Step 1: ๋ฌธ์ ์ดํดํ๊ธฐ
Step 2: ์ ๊ทผ ๋ฐฉ๋ฒ
์ง๊ด์ ์ผ๋ก ์๊ฐํ๊ธฐ
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
Step 3: ์ฝ๋ ์ค๊ณ
Step 4: ์ฝ๋ ๊ตฌํ