입출력 예
입출력 예 설명
입출력 예 #1
[1,2,4]를 이용해서 7을 만들 수 있습니다.
입출력 예 #2
[1,2,4]를 이용해서 7을 만들 수 있습니다.
[1,4,6]을 이용해서 11을 만들 수 있습니다.
[2,4,7]을 이용해서 13을 만들 수 있습니다.
[4,6,7]을 이용해서 17을 만들 수 있습니다.
# 하나의 리스트에서 모든 조합을 계산을 해야 한다면, permutations, combinations을 사용 # 두 개 이상의 리스트에서 모든 조합을 계산해야 한다면, product를 사용 from itertools import combinations def sosu(num): if num == 0 or num == 1: return False else: for n in range(2, (num//2)+1): # 공식 if num % n == 0: return False return True def solution(nums): answer = 0 cbn = list(combinations(nums, 3)) # 3개씩 조합 for i in cbn: if sosu(sum(i)) == True: # 조합한 것을 하나씩 sum answer += 1 return answer
💡 Today I learned
리스트 내 모든 조합을 계산해주는 permutations, combinations, product의 기능을 처음 알았다. 이렇게도... 편리한 모듈이 있다니...❤️
추가하자면, permutations와 combinations, product의 차이는 아래와 같다.
- permutations : 하나의 리스트에서 모든 조합을 계산, 중복허용(X), 순서의미(O)
items = ['1', '2', '3', '4', '5'] from itertools import permutations list(permutations(items, 2)) # [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '1'), # ('2', '3'), ('2', '4'), ('2', '5'), ('3', '1'), ('3', '2'), # ('3', '4'), ('3', '5'), ('4', '1'), ('4', '2'), ('4', '3'), # ('4', '5'), ('5', '1'), ('5', '2'), ('5', '3'), ('5', '4')]
- combinations : 하나의 리스트에서 모든 조합을 계산, 중복허용
from itertools import combinations list(combinations(items, 2)) # [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '3'), # ('2', '4'), ('2', '5'), ('3', '4'), ('3', '5'), ('4', '5')]
- product : 두 개 이상의 리스트에서 모든 조합을 계산
from itertools import product items = [['a', 'b', 'c,'], ['1', '2', '3', '4'], ['!', '@', '#']] list(product(*items)) # [('a', '1', '!'), ('a', '1', '@'), ('a', '1', '#'), ('a', '2', '!'), # ('a', '2', '@'), ('a', '2', '#'), ('a', '3', '!'), ('a', '3', '@'), # ('a', '3', '#'), ('a', '4', '!'), ('a', '4', '@'), ('a', '4', '#'), # ('b', '1', '!'), ('b', '1', '@'), ('b', '1', '#'), ('b', '2', '!'), # ('b', '2', '@'), ('b', '2', '#'), ('b', '3', '!'), ('b', '3', '@'), # ('b', '3', '#'), ('b', '4', '!'), ('b', '4', '@'), ('b', '4', '#'), # ('c,', '1', '!'), ('c,', '1', '@'), ('c,', '1', '#'), ('c,', '2', '!'), # ('c,', '2', '@'), ('c,', '2', '#'), ('c,', '3', '!'), ('c,', '3', '@'), # ('c,', '3', '#'), ('c,', '4', '!'), ('c,', '4', '@'), ('c,', '4', '#')]