본문 바로가기
코딩테스트

[python/Array] leetcode - two sum 문제

by 얘리밍 2022. 4. 18.
320x100
728x90

쉬운거 부터..

쉬워도 다시한번

돌아보고 풀자ㅎㅎ

 

문제 : Two Sum - https://leetcode.com/problems/two-sum/

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            a = nums[i]
            for j in range(1, len(nums)):
                b = nums[j]
                if i == j:
                    continue
                if a + b == target:
                       return [i,j]

 

57 / 57 test cases passed.
Status: 

Accepted

Runtime: 8323 ms
Memory Usage: 14.9 MB

 

Hash map을 활용하여 푸는 문제.

나는 해시맵을 사용하였는가.. nope..

 

Hash map 이란?

해싱(Hashing) 된 맵(Map)

맵(Map) => 키(key)와 값(value) 두 쌍으로 데이터를 보관하는 자료구조 

 

python에서 dictionary에 해당

 

ex)

streetno = {"1": "Sachin Tendulkar", "2": "Dravid", "3": "Sehwag", "4": "Laxman", "5": "Kohli"}

 

Discuss Best 코드 참고..

class Solution:
   def twoSum(self, nums: List[int], target: int) -> List[int]:
       seen = {}
       for i, value in enumerate(nums): #1
           remaining = target - nums[i] #2
           
           if remaining in seen: #3
               return [i, seen[remaining]]  #4
           else:
               seen[value] = i  #5

쉽게 보기 위해 

    Hashmap = {}
    for index, value in enumerate(nums):
        key = target - value
        if key in Hashmap:
            return [Hashmap[key], index]
        else:
            Hashmap[value] = index

hash map에 {key:value} -> {nums:index} 형태로 저장 

 

enumerate이란?

"열거하다" 라는 뜻

enumerate 함수는 순서와 리스트 값을 전달하는 기능을 한다.

 

 

728x90
반응형