Number of Good Pairs

제로콜라좋아요·2024년 6월 15일
0

algorithem

목록 보기
27/37

문제설명

주어진 정수 배열 nums가 있을 때, 좋은 쌍의 개수를 반환하세요.

쌍 (i, j)는 nums[i] == nums[j]이고 i < j인 경우에 좋은 쌍이라고 합니다.

예시 1:

입력: nums = [1,2,3,1,1,3]
출력: 4
설명: 0부터 시작하는 인덱스로 4개의 좋은 쌍이 있습니다: (0,3), (0,4), (3,4), (2,5).

예시 2:

입력: nums = [1,1,1,1]
출력: 6
설명: 배열의 모든 쌍이 좋은 쌍입니다.

예시 3:

입력: nums = [1,2,3]
출력: 0
설명: 좋은 쌍이 없습니다.

제약 조건:

1 <= nums의 길이 <= 100
1 <= nums[i] <= 100

문제풀이

class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        count = 0
        frequency = {}
        
        for num in nums:
            if num in frequency:
                count += frequency[num]
                frequency[num] += 1
            else:
                frequency[num] = 1
                
        return count

<내 코드의 흐름>

  1. numIdenticalPairs라는 메서드를 정의합니다. 이 메서드는 정수 리스트 nums를 인자로 받고, 정수(int)를 반환합니다.
  2. 좋은 쌍의 개수를 저장할 count 변수를 0으로 초기화합니다.
  3. 각 숫자의 빈도를 저장할 frequency라는 빈 딕셔너리를 초기화합니다.
  4. nums 리스트의 각 숫자 num에 대해 반복합니다.
  5. num이 frequency 딕셔너리에 이미 존재하는지 확인합니다.
  6. num이 이미 존재하면, num의 현재 빈도수를 count에 더합니다. 이는 현재 숫자가 이전에 몇 번 등장했는지 의미하며, 이 수만큼 새로운 좋은 쌍이 생깁니다.
  7. num의 빈도수를 1 증가시킵니다.
  8. num이 frequency 딕셔너리에 존재하지 않는 경우.
  9. num을 frequency 딕셔너리에 추가하고, 그 빈도수를 1로 설정합니다.
  10. 좋은 쌍의 총 개수인 count를 반환합니다.
profile
개발자계의 제로콜라

0개의 댓글