Skip to content

Rotate Arrayย #51

Description

@hsskey

๋ฌธ์ œ์„ค๋ช… | ๋ฐฐ์—ด ํšŒ์ „(Array Rotation)

์ •์ˆ˜ ๋ฐฐ์—ด 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
    • Output: [5,6,7,1,2,3,4]

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

Step 1: ๋ฌธ์ œ ์ดํ•ดํ•˜๊ธฐ

  • ์ž‘์€ ์˜ˆ์‹œ๋กœ ์ง์ ‘ ํšŒ์ „ ๊ณผ์ • ์‚ดํŽด๋ณด๊ธฐ
    • [1,2,3,4], k = 2 ์ธ ๊ฒฝ์šฐ
    • 1ํšŒ์ „: [4,1,2,3]
    • 2ํšŒ์ „: [3,4,1,2]
    • ํŒจํ„ด ๋ฐœ๊ฒฌ: k๋ฒˆ ํšŒ์ „ํ•˜๋ฉด ๋’ค์—์„œ k๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์•ž์œผ๋กœ ์˜ค๊ฒŒ ๋จ

Step 2: ์ ‘๊ทผ ๋ฐฉ๋ฒ•

  • ์ง๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ

    1. k๊ฐ€ ๋ฐฐ์—ด ๊ธธ์ด๋ณด๋‹ค ํด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ตœ์ ํ™” ํ•„์š”
    2. ์‹ค์ œ๋กœ๋Š” ๋ฐฐ์—ด ๊ธธ์ด๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋งŒํผ๋งŒ ํšŒ์ „ํ•˜๋ฉด ๋จ
    3. ๋’ค์—์„œ k๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ž˜๋ผ์„œ ์•ž์— ๋ถ™์ด๋ฉด ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐ ๊ฐ€๋Šฅ
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

    • splice()๋กœ ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ
    • unshift()๋กœ ์•ž์— ๋ถ™์ด๊ธฐ
    • ์ž„์‹œ ๋ฐฐ์—ด ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ตœ์†Œํ™”

Step 3: ์ฝ”๋“œ ์„ค๊ณ„

  1. k ์ตœ์ ํ™”ํ•˜๊ธฐ
    • k๋ฅผ ๋ฐฐ์—ด ๊ธธ์ด๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ตฌํ•˜๊ธฐ
  2. ๋’ค์—์„œ k๊ฐœ ์š”์†Œ ์ž๋ฅด๊ธฐ
    • splice(-k, k)๋กœ ๋งˆ์ง€๋ง‰ k๊ฐœ ์š”์†Œ ์ถ”์ถœ
  3. ์ž๋ฅธ ์š”์†Œ๋“ค์„ ๋ฐฐ์—ด ์•ž์— ์ถ”๊ฐ€
    • unshift()๋กœ ์ถ”์ถœํ•œ ์š”์†Œ๋“ค์„ ์•ž์— ๋ถ™์ด๊ธฐ

Step 4: ์ฝ”๋“œ ๊ตฌํ˜„

var rotate = function(nums, k) {
    // k ์ตœ์ ํ™”
    const optimizedK = k % nums.length;
    
    // ๋’ค์—์„œ k๊ฐœ ์š”์†Œ ์ž๋ฅด๊ธฐ
    const deletedArr = nums.splice(-optimizedK, optimizedK);
    
    // ์ž๋ฅธ ์š”์†Œ๋“ค์„ ๋ฐฐ์—ด ์•ž์— ์ถ”๊ฐ€
    nums.unshift(...deletedArr);  
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions