- 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 되어야 합니다.
- 가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.
def two_sum(nums, target):
nums_index = []
num1 = 0
num2 = 0
for i in nums:
for j in nums:
if i + j == target:
#nums_index.append(num1)
#nums_index.append(num2)
nums_index.extend((num1, num2))
return nums_index
break
else:
num2 += 1
nums_index.clear()
num1 += 1
더러워서 맘에 안든다..
아무튼 for 반복문을 두번 돌려서
각 숫자마다 해당하는 target의 값이 나올때까지
list내에서 다른 숫자들과 더하기를 하도록 했다.
def two_sum(nums, target):
index = 0
for n in range(index, len(nums)):
for i in range(index+1, len(nums)):
if nums[n] + nums[i] == target:
return[n, i]
깔끔하다.
for loops를 돌릴 때 range를 써도 되는 상황이라면
range를 사용해서 코딩하는 습관을 들여보자!
list의 각 요소를 append를 하도록 했었는데
이렇게 되면 append하는 코드가 2줄이 되니까 보기 싫었다..
그래서
"Python how to append multiple items in list"라고 검색했더니
역시나 해답이 있었다
>> lst = [1, 2] >> lst.append(3) >> lst.append(4) >> lst [1, 2, 3, 4] - >> lst.extend([5, 6, 7]) >> lst.extend((8, 9, 10)) >> lst [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - >> lst.extend(range(11, 14)) >> lst [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
👆🏻 이런 식으로 여러 개의 요소를 한번에 추가할 수 있다!