-
[Programmers] 삼총사 _Python알고리즘/프로그래머스 2022. 12. 1. 16:07728x90반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131705
풀이
# itertools 모듈에서 combinations 함수 사용 (집합 뽑기) from itertools import combinations def solution (number) : # 정답이 되는 삼총사의 개수를 변수 cnt = 0 # combinations함수를 이용해 # number 배열에서 원소 3개씩 조합을 뽑아서 i에 담는 반복문 for i in combinations(number,3) : # i의 합이 0이 될 경우 삼총사임 if sum(i) == 0 : cnt += 1 return cnt
새로 알게 된 모듈
- itertools
itertools - 효율적인 루핑을 위한 이터레이터를 만드는 함수
그 중에서도 조합 / 순열 함수인 아래 4가지 함수에 대해서 알아보자.
combinations()
combinations_with_replacement()
product()
permutations()📍combinations (iterable, r)
iterable에서 원소 개수가 r개인 조합 뽑기
from itertools import combinations if __name__ == '__main__': arr = [1, 2, 3, 4] for i in combinations(arr, 3): print(i)
출력 결과 (1, 2, 3) (1, 2, 4) (1, 3, 4) (2, 3, 4)
📍combinations_with_replacement (iterable,r)
iterable에서 원소 개수가 r개인 중복 조합 뽑기
from itertools import combinations_with_replacement if __name__ == '__main__': arr = [1, 2, 3, 4] for i in combinations_with_replacement(arr, 2): print(i)
출력 결과 (1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4)
📍permutations(iterable,r)
iterable에서 원소 개수가 r개인 순열 뽑기
from itertools import permutations if __name__ == '__main__': arr = [1, 2, 3, 4] for i in permutations(arr, 2): print(i)
출력 결과 (1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)
📍product(*iterables, repeat=1)
여러 iterable의 데카르트곱 반환
🖐🏻 잠깐! 여기서 데카르트곱이란?
임의의 두 집합 A와 B에 대해서 두 집합의 데카르트 곱 는
집합 의 원소 a와 집합 B의 원소 의 순서쌍(ordered pair) 으로 만들어지는 집합이다.from itertools import product if __name__ == '__main__': arr1 = ['A', 'B', 'C'] arr2 = ['1', '2', '3'] for i in product(arr1, arr2, repeat=1): print(i)
출력 결과 ('A', '1') ('A', '2') ('A', '3') ('B', '1') ('B', '2') ('B', '3') ('C', '1') ('C', '2') ('C', '3')
LIST'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 크기가 작은 부분문자열 _Python (0) 2022.12.28 [Programmers] 문자열 나누기 _Python (0) 2022.12.02 [Programmers] 귤 고르기 _Python (1) 2022.11.26 [Programmers] 햄버거 만들기 _Python (1) 2022.11.24 [Programmers] 푸드 파이트 대회 _Python (0) 2022.11.24