Claire's Study Note

[Python ์ฝ”ํ…Œ ์ž…๋ฌธ] 2. (๋ฌธ์ œ 4๋ฒˆ) ์ˆ˜์—ด์˜ ํšŒ์ „

by Hi.Claire
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ๏ธ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ต์‹ฌ - Python (๊น€ํƒœ์›, ์ธํ”„๋Ÿฐ)

 

์„น์…˜2. ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, deque

 

(๋ฌธ์ œ 4๋ฒˆ) ์ˆ˜์—ด์˜ ํšŒ์ „

์ •์ˆ˜ ์ˆ˜์—ด์˜ ์›์†Œ๋ฅผ ํšŒ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ nums์— ๊ธธ์ด๊ฐ€ n์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜ k์— ๋’ค๋กœ ์ด๋™์‹œํ‚ค๊ณ  ์‹ถ์€ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด nums์˜ ์›์†Œ ์ค‘ ์•ž ์›์†Œ k๊ฐœ๋ฅผ ์ˆ˜์—ด์˜ ๋’ค์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋‚œ ํ›„์˜ ์ˆ˜์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ž…์ถœ๋ ฅ ์˜ˆ

nums k answer
[3, 7, 1, 5, 9, 2, 8] 3 [5, 9, 2, 8, 3, 7, 1]
[2, 12, 2, 1, 3, 3, 9] 2 [2, 1, 3, 3, 9, 2, 12]
[1, 2, 5, 4, 6, 7, 9] 6 [9, 1, 2, 5, 4, 6, 7]
[1, 3, 6, 8, 14, 2, 1, 7] 5 [2, 1, 7, 1, 3, 6, 8, 14]

 

์ œํ•œ์‚ฌํ•ญ

  • nums์˜ ๊ธธ์ด : 3 <= n <= 200,000
  • ๋ฐฐ์—ด nums์˜ ์›์†Œ๋Š” ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. -10,000 <= nums[i] <= 10,000
  • 0 <= k <= nums์˜ ๊ธธ์ด

 

ํ’€์ด

def rotateSequence(nums, k):
  answer = nums[k:] + nums[0:k]
  return answer;

print(rotateSequence([3, 7, 1, 5, 9, 2, 8], 3));
print(rotateSequence([2, 12, 2, 1, 3, 3, 9], 2));
print(rotateSequence([1, 2, 5, 4, 6, 7, 9], 6));
print(rotateSequence([1, 3, 6, 8, 14, 2, 1, 7], 5));

[5, 9, 2, 8, 3, 7, 1]

[2, 1, 3, 3, 9, 2, 12]

[9, 1, 2, 5, 4, 6, 7]

[2, 1, 7, 1, 3, 6, 8, 14]

 

์ •๋‹ต ํ’€์ด

๋ถ„์„

1. ์ฒซ ๋ฒˆ์งธ ์ œํ•œ์‚ฌํ•ญ์—์„œ ์ตœ๋Œ€ ์ž…๋ ฅํฌ๊ธฐ๊ฐ€ 20๋งŒ์ด๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค.

2. ๋ฐฐ์—ด(Python์—์„œ๋Š” list)์˜ ๋งจ ์•ž์—์„œ๋ถ€ํ„ฐ ์›์†Œ๋ฅผ pop()ํ•ด์„œ ๋ฐฐ์—ด์˜ ๋งจ ๋’ค์— ์›์†Œ๋ฅผ append()ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

: ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋‹ค.

3. ๋ฐฐ์—ด์„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Python์—์„œ๋Š” deque)๋กœ ๋ฐ”๊ฟ”์„œ ๋งจ ์•ž์—์„œ๋ถ€ํ„ฐ ์›์†Œ๋ฅผ popleft()ํ•ด์„œ ๋งจ ์˜ค๋ฅธ์ชฝ์œผ๋กœ append()ํ•ด๋ณด์ž.

: deque์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.

๋”ฐ๋ผ์„œ deque๋กœ ๋ฐ”๊ฟ” ํ’€๊ณ  ๋‹ค์‹œ list๋กœ ๋ฐ”๊ฟ”์„œ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

 

ํ’€์ด

from collections import deque
def solution(nums, k):
    answer = deque(nums)
    for i in range(k):
      answer.append(answer.popleft())
    return list(answer);


print(solution([3, 7, 1, 5, 9, 2, 8], 3));
print(solution([2, 12, 2, 1, 3, 3, 9], 2));
print(solution([1, 2, 5, 4, 6, 7, 9], 6));
print(solution([1, 3, 6, 8, 14, 2, 1, 7], 5));

[5, 9, 2, 8, 3, 7, 1]

[2, 1, 3, 3, 9, 2, 12]

[9, 1, 2, 5, 4, 6, 7]

[2, 1, 7, 1, 3, 6, 8, 14]

๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Claire's Study Note

Hi.Claire

ํ™œ๋™ํ•˜๊ธฐ