def two_sum(nums, target):
for i in range(len(nums)): <-- 어떤 리스트의 인덱스 번호는, 그 리스트의 길이보다 클 수 없다는 점에서 착안.
for j in range(i+1,len(nums)): <-- 가령 위에서 1번째 요소를 탐색했다면, 아래에서는 그보다 하나 뒤의 요소를 탐색한다.
if nums[i]+nums[j]==target:
return [i,j]
else:
pass
for문을 중첩하여, 리스트의 인덱스를 더함으로써 목표로하는 target
을 탐색할 수 있다. 예를 들어보자.
만약 nums=[2,4,6,9,10]
이라고 가정하자. target
은 19라고 하자.
위의 중첩된 for문에서 나올 수 있는 경우의 수는 다음과 같다.
i==0 --> j (1~4) [0,1],[0,2],[0,3],[0,4]
i==1 --> j (2~4) [1,2],[1,3],[1,4]
i==2 --> j (3~4) [2,3],[2,4]
i==3 --> j (4~4) [3,4],
만약 nums[i]
와 num[j]
의 합이 target
과 같다면, if문을 빠져나오면 된다. 이 경우에는 i=3(즉, nums[3]), j=4(즉, nums[4])일 때 target
과 같다.
이렇게 모든 경우의 수를 다 뽑아서 목표를 충족하는 하나를 찾는다면 시간은 조금 걸리겠지만, 가장 단순하고 확실한 방법이라고 생각한다...