LeetCode는 소프트웨어 엔지니어링 및 코딩 인터뷰 준비를 위한 플랫폼이다. 다양한 프로그래밍 언어로 구현된 코딩 문제가 공하며 알고리즘 능력을 향상시키는데 도움을 준다.
LeetCode에 수 많은 문제 중에 시간을 절약하기 위해 New Year Gift – Curated List of Top 75 LeetCode Questions to Save Your Time 에서 각 카테고리/유형 별로 추천하는 75개 문제를 풀어본다.
이번 POST에서는 Array문제인 Contains Duplicate 문제를 python으로 풀어보았다.
목차
Leetcode 문제설명
이 문제는 주어진 배열에서 중복된 값이 적어도 하나라도 존재하면 true를 반환 모든 요소가 고유하면 false를 반환하는 문제이다.
해당 문제는 https://leetcode.com/problems/contains-duplicate/에서 확인할 수 있습니다.
예시 1에서는 배열 1이 두번 나타나기 때문에 중복이 있으므로 true
예시 2 에서는 주어진 배열의 모둔 요소가 서로 다르기에 중복된 값이 없어 false를 반환한다.
솔루션
python의 set 자료구조를 활용하여 간단하게 구현하였다. 만약에 리스트를 사용하게 되면 중복된 요소를 모두 저장해야 하므로 메모리사용이 많아 Time Limit Exceeded 에러가 발생한다.
class Solution: def containsDuplicate(self, nums: List[int]) -> bool: seen = set() # 이미 나타난 숫자를 저장하기 위한 집합(set)을 생성한다. for num in nums: # 주어진 배열을 반복하면서 각 숫자를 검사한다. if num in seen: # 현재 숫자가 이미 집합에 있다면 중복된 값이 있는 것이므로 True를 반환한다. return True seen.add(num) # 현재 숫자를 집합에 추가한다. # 중복된 값이 없는 경우 False를 반환한다. return False
다음글은 Product of Array Except Self 문제입니다.