[LeetCode] 1. Two Sum (Python)

2025. 1. 30. 20:28·코딩 테스트
728x90

Problem

 

Solution

hash

hash를 사용해서 푸는 문제. 문제에서도 O(n^2) 보다 더 적은 시간 복잡도로 푸는것을 권장했다.

아래는 1등 풀이

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dt = {}
        
        for i, num in enumerate(nums):
            complement = target - num
            if complement in dt:
                return [dt[complement], i]
            dt[num] = i
        
        return []

 

일반 for 문을 사용할 경우:

일단 숫자 num를 첫번째 nums의 인덱스 값으로 지정하고, target - num 를 찾아가는 방식이다. 인덱스는 i~len(nums) 까지 순회한다.

enumerate 을 사용하여 for 문을 사용할 경우:

i, num으로 순회하면서 target-num 값을 찾아가는 방식.

 

만약 dictionary에 존재하지 않으면 하나씩 dict에 저장해간다.

그러다가 원하는 값 (target-a)가 dict에 존재하면 바로 리스트 반환

  • nums를 한 번 순회하면서 해시맵을 활용하여 연산을 처리하므로, 시간복잡도는 O(n)
  • 공간복잡도는 O(n) (해시맵에 최대 n개의 값이 저장될 수 있다).

 

Code

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

 

Complexity

Time Complexity

이중포문을 사용했으므로 O(n^2)

 

Space Complexity

answer 외에 추가적인 변수는 사용하지 않았으므로 O(1)

728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩 테스트' 카테고리의 다른 글

[LeetCode] 66.Plus One (Python)  (0) 2025.01.31
[LeetCode] 125.Valid Palindrome (Python)  (0) 2025.01.31
[LeetCode] 9. Palindrome Number (Python)  (0) 2025.01.30
[LeetCode] 290.Word Pattern (Python)  (0) 2025.01.28
[LeetCode] 205. Isomorphic String (Python)  (0) 2025.01.28
'코딩 테스트' 카테고리의 다른 글
  • [LeetCode] 66.Plus One (Python)
  • [LeetCode] 125.Valid Palindrome (Python)
  • [LeetCode] 9. Palindrome Number (Python)
  • [LeetCode] 290.Word Pattern (Python)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka & OpenSearch
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    kafka
    리트코드
    이분탐색
    프로그래머스
    자료구조
    Spring
    MySQL
    금융용어
    Python
    자바
    카프카
    코딜리티
    db
    코딩
    네트워크
    디비
    스프링
    springboot
    코딩테스트
    코테
    Kotlin
    코틀린
    java
    docker
    알고리즘
    C++
    CodingTest
    LeetCode
    codility
    pythoncodingtest
  • 최근 댓글

  • 최근 글

  • 300x250
  • hELLO· Designed By정상우.v4.10.4
zoodi
[LeetCode] 1. Two Sum (Python)
상단으로

티스토리툴바