知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Code/LeetCode

[LeetCode] 1.Two Sum (Easy/Python3)

코방코 2022. 8. 29. 06:31
728x90

LeetCode에서 1번 문제를 시작하였다. 

오랜만에 코딩을 시작하기도 하고, 아직 실력도 많이 부족해서 Easy 난이도의 문제를 선택해서 풀기로 했다.

문제는 아래 링크에서 확인 가능하다.

 

Two Sum - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제를 요약하면, 리스트 nums 와 int target이 주어질 때, 

target을 nums 내에 존재하는 수 중 두 개의 합으로 만들 수 있을 때

해당하는 수의 index값을 리스트 형태로 출력하면 된다.

예시로 nums=[2,7,11,15] 이고 target=9 일 때 결과값은 [0,1] 이 나오면 되는 것 

 

나는 이를 Python3로 다음과 같이 해결했다.

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result=[]
        i=0
        for i in range(len(nums)):
            j=i+1
            while j<len(nums):
                if target-nums[i]==nums[j]:
                    result.append(i)
                    result.append(j)
                    return result
                    break
                else:
                    j+=1
            i+=1

이러한 코드는 좋지 못한 시간 효율이 나왔다.

for문에다 while문을 넣어서 그런 거 같다.

잘 푼 사람들을 보니 dictionary를 사용하여 해결하였다.

dictionary에 nums 각 값을 key, Index를 Value로 추가하여

만약 target-nums[i]가 dictionary value에 존재한다면 value값과 현재 i 값을 출력하는 방식이다.

 

처음에는 이중 for문으로 구현하려했는데, for 안에 존재하는 for문에서 변수 j 처리를 잘 못해서

원하는 만큼 for문이 반복되지 않았다.

 

열심히 연습해야할 것 같다.

 

728x90
반응형