Python 알고리즘1

김루트·2021년 4월 4일
0

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과 같다.

이렇게 모든 경우의 수를 다 뽑아서 목표를 충족하는 하나를 찾는다면 시간은 조금 걸리겠지만, 가장 단순하고 확실한 방법이라고 생각한다...

profile
반갑습니다.

0개의 댓글