[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
'๐ ์ฝ๋ฉํ ์คํธ > ์ ๋ฌธ์๋ฅผ ์ํ ์ฝ๋ฉํ ์คํธ ํต์ฌ - Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 4๋ฒ) ์์ด์ ํ์ (0) | 2024.05.21 |
---|---|
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 3๋ฒ) ์ฐ์๋ '1'์ ๊ธธ์ด (0) | 2024.05.18 |
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 2๋ฒ) ํฉ๊ฒฉ์ (0) | 2024.05.16 |
[Python ์ฝํ ์ ๋ฌธ] 2. ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, deque (2) | 2024.05.12 |
[Python ์ฝํ ์ ๋ฌธ] 1. ์๊ฐ๋ณต์ก๋ (0) | 2024.05.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Claire's Study Note
Hi.Claire