[LeetCode] 1512. Number Of Good Pairs
Updated:
Number Of Good Pairs
λ°°μ΄ μμ κ°μ μ«μλ‘ μ΄λ£¨μ΄μ§ μ§μ κ°μλ₯Ό λ°ν νλ λ¬Έμ μ΄λ€.
μ΄ μ€ ν¬λ¬Έμ μ¬μ©νλ©΄ ν μ μλ€. νμ§λ§ ν¬λ¬Έμ ν λ²λ§ μ¬μ©ν΄μλ ν μ μλλ° μνμ μΌλ‘ μκ°νλκ² μ°Έ λλ¨ν κ² κ°λ€.
import collections
from typing import List
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
pair_num = 0
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] == nums[j]:
pair_num += 1
return pair_num
# d = collections.defaultdict(int)
# for i in nums:
# d[i] += 1
# return sum(k * (k - 1) // 2 for k in d.values())
# d = dict()
# for i in nums:
# try:
# d[i] += 1
# except KeyError:
# d[i] = 1
# return sum(k * (k - 1) // 2 for k in d.values())
collection μ defaultdict λ₯Ό μ¬μ©νλ©΄ ν€κ° μλ κ²½μ° λ―Έλ¦¬ μ ν΄ λ κ°μ λ°ννλ€.
μμμλ defaultdict(int) λ‘ ν΄λμκΈ° λλ¬Έμ ν€κ° μλ κ²½μ° 0 μ λ°ννλ€.
ν¬λ¬Έμ ν λ²λ§ μ¬μ©νλ κ²½μ° μ΄λ κ² dict λ₯Ό λ§λ€μ΄ nums μμ μ£Όμ΄μ§ κ° μ«μμ κ°μλ₯Ό μΌλ€.
κ·Έλ¦¬κ³ κ·Έ μ«μλ§λ€ λ§λ€ μ μλ μ§μ μλ₯Ό κ³μ°νλ€. k * (k - 1) μμ 2 λ₯Ό λλμ΄ μ€ μ΄μ λ (i, j) , (j, i) μ μ€λ³΅μ μ μΈνκΈ° μν¨μ΄λ€.
μ΄ λ¬Έμ μμ μ΄μ€ν¬λ¬Έκ³Ό λ¨μΌν¬λ¬Έμ μ¬μ© ν κ²½μ° μλκ° 4ms λ°μ μ°¨μ΄κ° λμ§λ μμ§λ§ μ΄λ»κ²λ 볡μ‘λλ₯Ό μ€μ΄λκ² μ μΌ μ€μνλ€ !!!
μ΄λ€ μκ³ λ¦¬μ¦μ΄ μ£Όμ΄μ‘μ λ κ·Έκ²μ μνμ μΌλ‘ λ°κΏ μ μλ λ₯λ ₯μ΄ μ μΌ λΆλ½λ€..
λ μΆκ°λ‘ κ²μμ ν΄λ³΄μλλ° collection μ 리μ€νΈ μμ κ°μλ₯Ό μΈμ£Όλ ν¨μκ° μμλ€. Counter() λ₯Ό μ¬μ© νλ©΄ λλ€.
import collections
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
d = collections.Counter(nums)
return sum(k * (k - 1) // 2 for k in d.values())
μμμ ꡬννλ Counter() ν¨μκ° μ΄λ―Έ λ΄μ₯λμ΄ μμλ€. μ΄ μ½λλ‘ μ μΆμ νλ©΄ λ©λͺ¨λ¦¬ μ¬μ©μ λΉμ·νμ§λ§ λ°νμμ΄ 24ms κ° λλ€.
Leave a comment