We.TIL 번외 : 코드카타 01 - '특정수'를 인자를 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 Return

김기욱·2020년 8월 3일
0

We.TIL

목록 보기
25/69

문제

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개 밖에 없다고 가정하겠습니다.

해답

중복 For문과 가정문을 이용해 해결하는 방식이다.
처음에 x인자를 0에서부터 마지막 인덱스에서 찾는다. y는 x를 제외한 숫자이므로 x인자에서 1을 더한 인덱스부터 마지막까지 찾는다. for문에 조건문을 걸면 조건에 맞는 인덱스인 x부터 찾으므로 y는 그다음 인덱스부터 시작해서 끝까지 for문으로 돌려 찾아내면 된다. 찾은 x,y를 리스트형태로 반환하면 해결된다.

더 간결한 해답

결과적으로 더해서 같은 값은 무조건적으로 존재하고, 그 경우의 수가 한 가지 밖에 없다고 가정되기 때문에 반대로 특정 수와 요소를 뺀 값이 해당 요소를 제외한 다른 인덱스에 무조건적으로 존재한다. 따라서 for in 반복문을 통해서 하나의 요소만 결정한 다음 특정수(Target)에서 그 요소를 빼서 두 요소의 인덱스만 반환하면 된다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글