Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.
two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
- nums: 숫자 배열
- target: 두 수를 더해서 나올 수 있는 합계
- return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14]
target은 13nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
new_list = []
for i in nums: # 길이를 range(len(nums)) 로 지정
for j in nums:
if i + j == target:
new_list.append(nums.index(i))
new_list.append(nums.index(j))
return new_list
return None
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
for i in nums:
for j in nums:
if i + j == target:
return [nums.index(i), nums.index(j)]
return None
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i]+nums[j] == target:
return [i,j]
return None
[0,0]
값 리턴, 리스트 인덱스가 같은 값이 더하는 문제가 있음을 발견이 문제를 해결할 알고리즘은 어떤 알고리즘이 있을까?
def two_sum(nums, target):
# 아래 코드를 작성해주세요.
result=0
for i in range(len(nums)):
result=target-nums[i]
nums2=nums[i+1:] #나머지 숫자 list를 nums2에 대입
if result in nums2:
num1_position = i
num2_position = nums2.index(result)+i+1
return [num1_position,num2_position]
else:
continue
def two_sum(nums, target):
index_map = {}
for i in range(len(nums)):
num = nums[i]
pair = target - num
if pair in index_map:
return [index_map[pair], i]
index_map[num] = i
return None