728x90
▼ 문제 바로가기 (링크) ▼
https://leetcode.com/problems/number-of-good-pairs/
주어진 정수 리스트에서 2개씩 뽑아서 만들 수 있는 조합 중,
각 튜플 안의 수 2개를 더한 값이 같은 것 끼리 모았을 때
그 짝의 수가 가장 많은 조합을 찾고 정수로 반환하는 문제.
먼저 조합과 순열에 대한 개념을 한 번 더 확인했다.
조합 : n개에서 r개를 선택하는 경우의 수. 순서는 고려하지 않음.
(1,2를 뽑았다면 2,1은 선택하지 않음)
순열 : 순서까지 고려함. (ex. 1,2 와 2,1 은 다름. )
from itertools import combinations
이터레이션, 이터레이터 : 반복, 반복자.
조합과 순열은 itertools 라이브러리를 사용한다.
기본 문법은 위와 같이
import 해준 후, combinations( 반복가능한 객체, 뽑을 개수).
다중 for문으로 만들 수 있지만, 전용 모듈이 실행 속도가 더 빠르므로
바로 검색해서 기본 문법대로 만들었다.
from itertools import combinations
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
comb = list(combinations(nums, 2))
print(comb)
새로운 조합은 튜플 형태로 리스트 안에 담겨 반환된다.
# print 결과
[(1, 2), (1, 3), (1, 1), (1, 1), (1, 3), (2, 3), (2, 1), (2, 1), (2, 3), (3, 1), (3, 1), (3, 3), (1, 1), (1, 3), (1, 3)]
이렇게 중첩된 배열(리스트)는 2차원 배열이라고 한다.
좌표처럼 각 요소의 인덱스를 두 번 입력해서 접근할 수 있다.
참고: https://dojang.io/mod/page/view.php?id=2291
from itertools import combinations
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
comb = list(combinations(nums, 2))
tmp = [] # 원소가 같은 튜플만 담을 리스트
t = len(comb)
for i in comb:
if i[0] == i[1] :
tmp.append(i)
return len(tmp)
완성된 코드.
728x90
반응형
'코딩 테스트 > leetCode' 카테고리의 다른 글
[leetCode] 1832. Check if the Sentence Is Pangram (Python) (0) | 2022.10.18 |
---|---|
[leetCode] 771. Jewels and Stones (Python) (0) | 2022.10.18 |
[leetCode] 13. Roman to Integer (Python) (0) | 2022.10.14 |
[leetCode] 2160. Minimum Sum of Four Digit Number After Splitting Digits (Python) (0) | 2022.10.13 |
[leetCode] 2114. Maximum Number of Words Found in Sentences (Python) (0) | 2022.10.12 |