코드카타 #1
문제
two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
조건
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
ex)
nums은 [4, 9, 11, 14]
target은 13
nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.
내 답
def two_sum(nums, target):
for i in nums:
for j in nums:
if i + j == target:
return [nums.index(i), nums.index(j)]
test 통과는 나올거라고 생각 했지만 사실 이렇게 하면 예외 상황에 걸리게 된다. 사실 입력되는 예외 test를 보고 싶어서 입력했지만,,
일단
1) nums = [2,2,3,5] / target = 4일때
-> 나의 풀이 방법대로 하면 i=0 / j=0에서 스탑 하기 때문에
>>> [0,0]
으로 return 할것이다
2) 또 있나..?
그럼 위의 1) 예외 상황을 빗겨나려면 뭐 방법은 많지만 최대한 if 와 for 를 안쓰고 싶지만 음
일단 예외상황 조건 주기
for i in nums:
for j in nums:
if i + j == target and i != j:
return [nums.index(i), nums.index(j)]
아..? 그냥 이렇게 i!=j 만 줘도 되겠네
어짜피 0,0 넘어갈거니까 말이다.
다른 사람 답안
def two_sum(nums, target):
for i in range(len(nums)):
n =1
while i+n<len(nums):
if nums[i] + nums [i+n] == target :
return [i , i+n]
else:
n=n+1
Author And Source
이 문제에 관하여(코드카타 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jake93/codekata1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)