Claire's Study Note

[Python ์ฝ”ํ…Œ ์ž…๋ฌธ] 2. (๋ฌธ์ œ 1๋ฒˆ) ์ตœ์†Ÿ๊ฐ’์˜ ์œ„์น˜

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

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

 

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

 

(๋ฌธ์ œ 1๋ฒˆ) ์ตœ์†Ÿ๊ฐ’์˜ ์œ„์น˜

์ˆ˜์—ด์˜ ์›์†Œ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ nums์— ๊ธธ์ด๊ฐ€ n์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง€๋ฉด ์ˆ˜์—ด์˜ ์›์†Œ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„ ๊ทธ ๊ฐ’์˜ nums ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

nums answer
[7, 10, 5, 3, 2, 15, 19] 4
[-12, 12, 30, -15, -5, 3, 9, -11, 14] 3
[17, 11, 5, 8, 23, 29, 19, 12, 25, 16, 2] 10
[7, 5, 12, -9, -12, 22, -30, -35, -21] 7

 

์ œํ•œ์‚ฌํ•ญ

  • nums์˜ ๊ธธ์ด : 3 <= n <= 100,000
  • ๋ฐฐ์—ด nums์˜ ์›์†Œ๋Š” ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. -1,000,000 <= nums[i] <= 1,000,000
  • ๋ฐฐ์—ด nums์˜ ์›์†Œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์ž…๋ ฅ์˜ˆ์ œ 1 ์„ค๋ช…

[2, 7, 1, 12, 8, 15, 19]์˜ ์ตœ์†Ÿ๊ฐ’์€ 1์ด๊ณ  1์€ ๋ฐฐ์—ด์˜ 2๋ฒˆ ์ธ๋ฑ์Šค ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ’€์ด

def findMinValue(nums):
  nums.sort()
  return nums[0];

def findIndex(nums, val):
  return nums.index(val);

def findMinIndex(nums):
  newNums = nums.copy()
  min = findMinValue(nums)
  index = findIndex(newNums, min)
  return index;

nums = [2, 7, 1, 12, 8, 15, 19]

findMinIndex(nums)

2

 

๋ฐฐ์—ด์€ Python์—์„œ list ์ž๋ฃŒํ˜•์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

list์˜ ๊ธฐ๋ณธ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

ํ’€์ด ๊ณผ์ •

1. ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ nums๋Š” ํฌ๊ธฐ๊ฐ€ 3 ์ด์ƒ 10๋งŒ ์ดํ•˜์ธ list(๋ฐฐ์—ด) ์ž๋ฃŒํ˜•์ด๋‹ค. nums์˜ ๊ฐ’๋“ค์€ -100๋งŒ ์ด์ƒ 100๋งŒ ์ดํ•˜์˜ ์ •์ˆ˜์ด๋ฉฐ, ์ค‘๋ณต๋œ ๊ฐ’์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

2. findMinValue(nums) ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ nums๋ฅผ sort() ํ•จ์ˆ˜๋กœ ์ •๋ ฌํ•ด์„œ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

3. findIndex(nums, val) ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ nums์™€ val์„ ๋ฐ›๋Š”๋‹ค. index() ํ•จ์ˆ˜๋ฅผ ์จ์„œ nums์—์„œ val ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰, findIndex() ํ•จ์ˆ˜์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐฐ์—ด๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๋„˜๊ธฐ๋ฉด ์ตœ์†Ÿ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4. findMinIndex(nums) ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ nums ๋ฐฐ์—ด์„ ๋ฐ›์•„ ์ตœ์†Ÿ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์‹œ๊ฐ„๋ณต์žก๋„

ํŒŒ์ด์ฌ list์˜ copy() ํ•จ์ˆ˜ : O(n)

ํŒŒ์ด์ฌ list์˜ sort() ํ•จ์ˆ˜ : O(nlogn)

 

(์ฐธ๊ณ ) ํŒŒ์ด์ฌ ์ž๋ฃŒํ˜• ๋ณ„ ์ฃผ์š” ์—ฐ์‚ฐ์ž์˜ ์‹œ๊ฐ„๋ณต์žก๋„(Big-O)

https://wayhome25.github.io/python/2017/06/14/time-complexity/

 

ํŒŒ์ด์ฌ ์ž๋ฃŒํ˜• ๋ณ„ ์ฃผ์š” ์—ฐ์‚ฐ์ž์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ (Big-O) · ์ดˆ๋ณด๋ชฝํ‚ค์˜ ๊ฐœ๋ฐœ๊ณต๋ถ€๋กœ๊ทธ

ํŒŒ์ด์ฌ ์ž๋ฃŒํ˜• ๋ณ„ ์ฃผ์š” ์—ฐ์‚ฐ์ž์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ (Big-O) 14 Jun 2017 | ๋“ค์–ด๊ฐ€๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์ƒ๊ธด๋‹ค. ํŠนํžˆ codility๋Š” ๋ฌธ์ œ๋งˆ๋‹ค ์‹œ๊ฐ„๋ณต์žก๋„ ๊ธฐ์ค€

wayhome25.github.io

 

์ •๋‹ต ํ’€์ด

๋ถ„์„

1. ์ฒซ ๋ฒˆ์งธ ์ œํ•œ์‚ฌํ•ญ(nums์˜ ๊ธธ์ด : 3 <= n <= 100,000)์„ ๋ณด๋ฉด ์ž…๋ ฅํฌ๊ธฐ๊ฐ€ 10๋งŒ๊นŒ์ง€ ๋“ค์–ด์˜จ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋‚˜ O(nlogn)์ด์–ด์•ผ ํ•œ๋‹ค.  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n2)์ด๋ฉด ์•ˆ ๋œ๋‹ค.

2. ๋ฐฐ์—ด์„ ์ˆœ์ฐจํƒ์ƒ‰ํ•˜๋ฉฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋‹จ์ˆœ for loop๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋‹ค.

 

ํ’€์ด

def solution(nums):
    answer = 0
    # ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ถ€ํ„ฐ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก minValue๋Š” ๋ฐฐ์—ด ์›์†Œ์˜ ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ํ›จ์”ฌ ํฐ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
    minValue = 10000000
    for i in range(len(nums)):
      if(nums[i] < minValue):
        minValue = nums[i]
        answer = i
    
    return answer

print(solution([7, 10, 5, 3, 2, 15, 19]))
print(solution([-12, 12, 30, -15, -5, 3, 9, -11, 14]))
print(solution([17, 11, 5, 8, 23, 29, 19, 12, 25, 16, 2]))
print(solution([7, 5, 12, -9, -12, 22, -30, -35, -21]))
print(solution([2, 7, 1, 12, 8, 15, 19]))

4

3

10

7

2

๋ฐ˜์‘ํ˜•

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

Claire's Study Note

Hi.Claire

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