제목에서 Duplicate는 "중복"을 의미한다.
다시 말해서, 주어진 리스트에 중복이 있는가?라는 것을 확인하면 끝인데.
일단 "리스트 원소의 중복"이라는 단어가 나올때 먼저 떠올려야 하는것은 set()이다.
초보자일 경우에 가장 먼저 떠올리는 방법은 "하나하나 확인"일 것이다. 다음과 같이 코드를 짤 수 있다.
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
h = set()
for num in nums:
if num in h:
return True
else:
h.add(num)
return False
실제로 for문을 돈다고 해도, set()안에 원소가 있는지 확인 하는 것은 빠르게 확인 할 수 있기에, 금방 끝난다.
하지만, "중복"이 존재하는지 물어보는 것이면, set()을 거쳤을 때 "원소의 개수가 줄어든다"라는 점을 생각할 수 있다.
따라서 set을 통과시킨 후 길이가 같은지만 확인 하면 끝난다는 것이다.
파이선에서 길이를 확인 하는 것은 "len()"인데, 이는 리스트, set, dict 모두 사용가능하다.
따라서 다음과 같이 코드를 짤 수 있다.
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
pre = len(nums)
cur = len(set(nums))
return pre != cur
기존의 길이 pre와 set()를 통과시킨 후의 길이 cur이 같은지 아닌지만 확인하면 된다.
'리트코드 알고리즘 > 리트코드 easy' 카테고리의 다른 글
(간단한 코드)리트코드 242. Valid Anagram (0) | 2024.12.13 |
---|---|
(간단한 코드)리트코드 383. Ransom Note (0) | 2024.12.12 |
(간단한 코드)리트코드 771. Jewels and Stones (0) | 2024.12.12 |
(간단한 코드)리트코드 228. Summary Ranges (0) | 2024.12.10 |
(간단한 코드)리트코드 14. Longest Common Prefix (0) | 2024.12.08 |