Skip to content

Latest commit

 

History

History
44 lines (32 loc) · 1.85 KB

풀이_LC217.md

File metadata and controls

44 lines (32 loc) · 1.85 KB

🌴 217. Contains Duplicate

  • Date : 2021.06.27(일)
  • Time : 10분

Problem

  • Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

Constraints

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

Example

  • Input: nums = [1,2,3,1]
  • Output: true

풀이1

    def containsDuplicate(self, nums: list[int]) -> bool:

        if len(set(nums)) == len(nums) :
            return False
        else :
            return True

: 배열에서 중복된 값이 있는지 알아보는 방법 첫번째는 set을 이용하는 것이다. 집합(set)은 중복을 허용하지 않는 특성이 존재하기 때문에 중복이 있는 배열을 set으로 변경한다면 갯수가 줄어들 것이다. 이를 이용해서 문제를 풀 수 있다.

풀이2

    def containsDuplicate(self, nums: list[int]) -> bool:

        nums.sort()
        for i in range(0,len(nums)-1,1):
            if nums[i] == nums[i+1]:
                return True
        return False

: 배열에서 중복된 값이 있는지 알아보는 방법 첫번째는 for문을 이용하는 것이다. 먼저 정렬을 시킨다. 배열을 정렬시키는 이유는 같은 값을 모이게 하여 빠르게 값을 찾아내기 위함이다. 정렬 후 for문을 이용해 연속된 배열의 값을 2개씩 출력한다. 이 2개가 같다면 중복된 값이므로 True을 출력하고 for문을 다 돈다면 중복값이 없다는 뜻이기 때문에 False를 출력한다. 이 알고리즘은 만약 중복된 값이 숫자가 작아서 앞에 위치하게 된다면 값을 아주 빠르게 찾을 수 있겠지만, 만약 중복된 숫자가 큰 값이여서 뒤에 있다면 for문을 거의 다 돌 때 쯤에 찾을 수 있기 때문에 늦게 찾아질 것 같다.