배열 nums, 정수 target을 입력 받아 nums의
서로 다른 두 원소를 합하여 target이 되게 하는
두 원소의 index를 리스트로 반환하라.
(단, 합이 되게 하는 Index 조합은 1쌍만 존재한다.)
# ex) nums= [4, 9, 11, 14] target=13 일 때, [0,1]을 반환
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
for i in range(len(nums)-1):
for j in range(1,len(nums)):
if nums[i]+nums[j]==target:
return result
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
for i in range(len(nums)):
for j in range(i,len(nums)):
return [i, j]
중첩 for문에서, j가 1부터 시작하므로, 앞선 for문에서
비교한 index쌍이 중복됨으로 비효율적이다!
예를 들어
(i, j)=(1,2) 일때, nums[i]=9 nums[j]=11
(i, j)=(2,1) 일때, nums[i]=11 nums[j]=9 임으로
같은 조합의 쌍을 반복적으로 검사함으로 비효율적이다.
이 문제의 경우 nums에 서로 다른 두 원소의 합이 target이
되게 하는 두 원소의 index를 반환하는 문제임으로 i,j가 같아질 경우
같은 원소를 더해서 target이 되는 경우가 내 풀이, 짝 풀이에서 모두
걸러지지 않는다.
ex) nums = [1, 2, 6, 8, 4] target=12
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
return [i, j]