본문 바로가기

Leetcode

Leetcode 532. K-diff Pairs in an Array

오랜만에 코딩 연습을 했다. 그동안 공부를 안했어서 그런지 머리가 돌덩이가 된 느낌이고...

그래서 시간이 조금 오래 걸렸지만 해냈을 때의 뿌듯함은 말로 표현할 수 없다.


오늘 문제는 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만 선언해주어도 되었다.

 

 

 

완료!

오늘 하루도 힘차게 시작해서 원하는 목표를 이룰 수 있길 바란다.