코드카타 #1

4802 단어 pythonTILTIL

문제

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

좋은 웹페이지 즐겨찾기