오랜만에 코딩 연습을 했다. 그동안 공부를 안했어서 그런지 머리가 돌덩이가 된 느낌이고...
그래서 시간이 조금 오래 걸렸지만 해냈을 때의 뿌듯함은 말로 표현할 수 없다.
오늘 문제는 nums라는 배열과 숫자 k가 주어졌을 때, nums 배열에서 k 만큼 차이가 나는 쌍의 개수를 구하는 문제이다.
Python에서 코딩 연습을 할 때 자주 쓰는 collections.Counter 을 사용하였다.
Counter란?
해당 배열에서 같은 문자 / 숫자가 몇 개 나왔는지 세어 dictionary 형으로 알려주는 유용한 클래스이다.
예를 들어 arr = [1, 2, 3, 4, 2] 라는 배열이 주어졌을 때,
collections.Counter(arr) 을 선언해주면, 1은 1개, 2는 2개, 3은 1개, 4는 1개이므로
{1 : 1, 2 : 2, 3 : 1, 4 : 1} 이 반환된다.
이 문제에서는 k 가 0일때와 k가 양수일 때로 구분할 수 있는데,
k > 0 인 경우 : 배열 내 원소 i - k 가 배열 내에 존재하는지 확인하면 되고,
k = 0 인 경우 : Counter에서의 value 값이 1보다 큰지 확인하면 된다.
class Solution:
def findPairs(self, nums: List[int], k: int) -> int:
answer = 0
cnt = Counter(nums)
for i in cnt:
if (k > 0 and i-k in cnt) or (k == 0 and cnt[i] > 1):
answer += 1
return answer
깔끔하게 완료!
보통 위에 from collections import Counter를 선언해주지만,
Leetcode 상에서는 Counter만 선언해주어도 되었다.
완료!
오늘 하루도 힘차게 시작해서 원하는 목표를 이룰 수 있길 바란다.
'Leetcode' 카테고리의 다른 글
Leetcode 17. Letter Combinations of a Phone Number (0) | 2022.05.09 |
---|---|
Leetcode 2160. Minimum Sum of Four Digit Number After Splitting Digits (0) | 2022.02.11 |
Leetcode 938. Range Sum of BST (0) | 2021.12.14 |
Leetcode 26. Remove Duplicates from Sorted Array (0) | 2021.12.12 |
Leetcode 563. Binary Tree Tilt (0) | 2021.12.09 |