๋ฌธ์
two_sum
ํจ์์ ์ซ์ ๋ฆฌ์คํธ์ 'ํน์ ์'๋ฅผ ์ธ์๋ก ๋๊ธฐ๋ฉด, ๋ํด์ 'ํน์ ์'๊ฐ ๋์ค๋ index๋ฅผ ๋ฐฐ์ด์ ๋ด์ returnํด ์ฃผ์ธ์.
nums: ์ซ์ ๋ฐฐ์ด
target: ๋ ์๋ฅผ ๋ํด์ ๋์ฌ ์ ์๋ ํฉ๊ณ
return: ๋ ์์ index๋ฅผ ๊ฐ์ง ์ซ์ ๋ฐฐ์ด
์๋ฅผ ๋ค์ด,
nums์ [4, 9, 11, 14]
target์ 13
nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?
๊ทธ๋ฌ๋ฉด [0, 1]์ด return ๋์ด์ผ ํฉ๋๋ค.
nums์ [4, 9, 11, 14]
target์ 13
nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?
๊ทธ๋ฌ๋ฉด [0, 1]์ด return ๋์ด์ผ ํฉ๋๋ค.
๊ฐ์
target
์ผ๋ก ๋ณด๋ด๋ ํฉ๊ณ์ ์กฐํฉ์ ๋ฐฐ์ด ์ ์ฒด ์ค์ 2๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
ํ์ด
์ผ๋จ, input์ ๋ฐ๋ฅธ output์ ๋จผ์ ์๊ฐํ๋ค.
์ซ์ list ์์ ์ค, 2๊ฐ๋ฅผ ๊ณจ๋์ ๋ x+y = target
์ด ๋์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ return์ ๊ฐ ์ซ์์ index๋ก ๊ตฌ์ฑ๋ list๋ค.
์ฒ์์๋ nums
์์ ์์๋๋ก 2๊ฐ์ฉ ๊บผ๋ด ํฉํ๋ ๊ฒ์ผ๋ก ์๊ฐํด๋ดค๋ค.
def two_sum(nums, target):
# ์๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
result = 0
for i in range(len(nums)):
result += nums[i]
if result == target:
...
๊ทธ๋ฐ๋ฐ for๋ฌธ์ 0,1,2... ์ด๋ ๊ฒ ์์๋๋ก ๋์๊ฐ๊ณ ์ ์ ์ด๋ค ์์์ ์ซ์๊ฐ x์ y๊ฐ ๋ ์ง๋ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํฉํ์ง ์์.
๊ทธ๋์ ๋ํ๊ธฐ ๋์ ๋นผ๊ธฐ์ ๋ฐฉ์์ผ๋ก ์๊ฐ์ ๋ฐ๊ฟจ๋ค.
๊ทธ๋ฌ๋ฉด nums[0]
๋ถํฐ target
์์ ๊ฐ์ ๋นผ๊ณ , ์ด ๊ฐ์ด ๋ค๋ฅธ ์ซ์๋ค ์ค์ ํ๋์ ์ผ์นํ๋ค๋ฉด x์ y ๋์ถ ๊ฐ๋ฅ.
๊ทธ๋ฆฌ๊ณ ์ผ์นํ๋ ์ซ์๋ฅผ ์ฐพ์ ๋๋ nums[0]
์ ์ ์ธํ๊ณ ์ฐพ์์ผ ํ๋ฏ๋ก,
nums[1:]
์์ ์ผ์นํ๋ ์ซ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
def two_sum(nums, target):
# ์๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
result = 0
for i in range(len(nums)):
result = target - nums[i]
if result in nums[i+1:]:
...
๋ง์ฝ ์ผ์นํ๋ ์ซ์๊ฐ ์๋ค๋ฉด, ์ผ๋จ nums[0]
์ x๋ y๊ฐ ์๋ ๊ฒ.
์์ ์ฝ๋์์ ๋ค์ develop ํ๋ฉด ์๋์ ๊ฐ๋ค.
def two_sum(nums, target):
# ์๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
result=0
for i in range(len(nums)):
result=target-nums[i]
nums2=nums[i+1:] #๋๋จธ์ง ์ซ์ list๋ฅผ nums2์ ๋์
if result in nums2:
num1_position = i
num2_position = nums2.index(result)+i+1
return [num1_position,num2_position]
else:
continue
์์ฑ ํ์ ์ด์ค for๋ฌธ๊ณผ ๊ฐ์ด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ํด์ ์๊ธฐํด ๋ณด๋ค๊ฐ, ์๊ฐ๋ณต์ก๋๋ผ๋ ๊ฐ๋
์ ๋ํด์ ๋ฐฐ์ ๋ค. ์๋ฃ ์ ํ, ์ฐ์ฐ์ ๋ฐ๋ผ ์๊ฐ๋ณต์ก๋๊ฐ ๋ค๋ฅด๋ค.
์ด๋ฅผ ํ์ฉํ๋ฉด ๋๋ต์ ์ธ ๋ฐํ์์ ๊ฐ๋ ํ ์ ์์ด ์ ์ฉํ ๊ฒ ๊ฐ๋ค.