생각할 수 있는 가장 쉬운 방법은, 초등학교 수학시간에 했던 것처럼 원소를 서로 다 더해보는 것이다.
for 문을 중첩해서, 바깥 루프가 고정 자리를 돌고 , 안쪽 루프가 뒤에 원소부터 하나씩 훝어서 더해서 target 이 되는지 보면 될 것이다.
#python3
def twoSum(self, nums: List[int], target: int) -> List[int]:
#먼저 nums 의 첫 숫자 i 를 잡고
for i in nums:
# 그 다음 i 다음의 숫자(j)부터 하나씩 i+j로 더해본다
for j in nums:
# 그런데 만약 i 와 j의 합이 target 이라면?
if nums[i] + nums[j] == target:
#리스트로 i 와 그 숫자를 리턴하라
return [i,j]
뭔가 이상하다. index out of range 에러를 만났다.
range
를 쓰지 않는다면 범위를 지정하지 않아서 그렇다.
def twoSum(self, nums: List[int], target: int) -> List[int]:
#먼저 nums 의 첫0번째 숫자부터 nums 의 길이까지
for i in range (0,len(nums)):
# 그 다음 i 다음의 숫자(j)부터 하나씩 i+j로 더해본다
for j in range(i+1, len(nums)) :
# 그런데 만약 i 와 j의 합이 target 이라면?
if nums[i] + nums[j] == target:
#리스트로 i 와 그 숫자를 리턴하라
return [i,j]
python 의 enumerate() 메소드를 이용할 수도 있다. 이 메소드는 enumerate 객체를 반환한다. [(인덱스, 요소)] 형태로 반환된다.