[TIL] Code Kata 1

SEUNGCHAN BAEK·2021년 3월 29일
0

Code Kata

목록 보기
1/7
post-thumbnail

import timeit

start = timeit.default_timer()

# solution 1

 def two_sum(nums, target):
     answer = []
     for i in range(len(nums)):
         for j in range(i+1,len(nums)):
             if nums[i] + nums[j] == target:
                 answer.append(i)
                 answer.append(j)
                 break

     return answer
     
     
# solution 2

def two_sum(num,target):
    for i in num:
        val1 = target - i
        if val1 in num:
            a = num.index(i)
            b = num.index(val1)
            return [a,b]

two_sum([1,2,3,4,5,6,7,8,9],17)

end = timeit.default_timer()

print(end-start)

1번처럼 이중 포문으로 풀고나서 조금 더 효율적인 코드는 없을까를 생각해보다가 for문을 한번만 쓰고 풀수 있을거 같다는 생각이 들었다. 주어진 target을 이용해서 한번 풀어보려고 노력했다. 리스트 값들 중에 한개를 뽑아서 target 에서 뺀 뒤 in 을 사용해서 값을 찾는 방법이였다. 코드 반복이 줄여 효율적인 코드라고 생각했지만 리스트에서는 in 이 O(n)의 시간 복잡도를 가진다는것을 알게 되었다. 결국 in 으로 인해 하나하나 값들을 확인하면서 값을 찾아내므로 내가 원하는 효율적인 코드가 아니였다.
오히려 이중포문보다 더 늦게 결과가 도출되었다.

1번 1.30초 , 2번 4.37초 둘다 테스트는 통과한다.

profile
백엔드 개발자가 되는 그날까지

0개의 댓글

관련 채용 정보