Code Kata
일본에서는 특히 kata를 중시해서 꽃꽃이, 무술, 가면극 등에도 kata를 적용시켜 전승되고있다고한다. 어쨌든 code kata란 이러한 개념을 프로그래밍에 적용시킨 것으로, 쉽게말해서 kata를 통해 매일 무술 훈련을하듯 코딩을 훈련하는 것이다.
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):
result = []
for n in nums:
for m in nums:
if n + m == target:
result.append(nums.index(n))
result.append(nums.index(m))
return result
a = two_sum([4, 9, 11, 14], 25)
# [2, 3, 3, 2]
리스트안에 2개의 값으로 비교할려면 일단 2중 for loop을 써야겠다는 생각은 했다.
이후에 target 값이랑 똑같다면 result = []안에 넣어라는 코드를 작성했다. 하지만 답은 나온거 같은데 뒤에 한번 더 출력된다.
그 이유를 생각해봤다.
최종 return
의 위치 때문이라는 결론에 도달했다. if 문을 끝내고 정답을 찾았으면 조건문을 끝내야하는데 반복문이 계속 돌아가 한번 더 찾은 것이다.
그래서 return
의 위치를 바꿔줬다.
def two_sum(nums, target):
result = []
for n in nums:
for m in nums:
if n + m == target:
result.append(nums.index(n))
result.append(nums.index(m))
return result
a = two_sum([4, 9, 11, 14], 25)
# [2, 3]
원하는 결과값이 잘 나왔다.