설명
서로 다른 7개의 정수 중 3개의 정수를 골라 합을 구해서 수를 만들려고 한다.
이렇게 만들 수 있는 수 중에서 5번째로 큰 수를 출력한다.
풀이
조합(combinatinos) 사용
1. 반복문으로 3개씩 조합을 만들고 합을 리스트에 저장한다.
2. sorted를 사용해 내림차순 정렬을 하고 set으로 중복을 제거한다.
3. 리스트의 5번째(인덱스 = 4)를 출력한다.
✔️ combinations
combinations 함수를 사용하기 위해선 itertools 라이브러리를 가져와야 한다.
from itertools import combinations
✔️ combinations(리스트, 정수)
정수 자리에 3을 넣으면 3개의 숫자로 조합을 한다.
from itertools import combinations
n = [1, 2, 3, 4]
ans = list(combinations(n, 3))
print(ans)
#결과
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
itertools에는 combinations 말고도 순열(permutations)이 있는데, 조합은 순서를 고려하지 않지만 순열은 순서를 고려한다.
permutaions 사용
from itertools import permutations
n = [1, 2, 3]
ans = list(permutations(n, 2))
print(ans)
#결과
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
combinations 사용
from itertools import combinations, permutations
n = [1, 2, 3]
ans = list(combinations(n, 2))
print(ans)
#결과
[(1, 2), (1, 3), (2, 3)]
✔️ set(list) - 중복 제거
n = [1, 1, 2, 2, 3]
print(set(n))
#결과
{1, 2, 3}
Solution
from itertools import combinations
t = int(input())
for tc in range(1, t+1):
n = list(map(int, input().split()))
ans = []
for i in combinations(n, 3): #list로 안 묶어도 됨
ans.append(sum(i))
ans = list(set(sorted(ans, reverse=True))) #중복 제거 해야 함 - set 사용
print('#'+str(tc), ans[4])
'SWEA' 카테고리의 다른 글
[SWEA] 5431. 민석이의 과제 체크하기 (Python/D3) (2) | 2023.11.16 |
---|---|
[SWEA] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (Python/D3) (0) | 2023.11.16 |
[SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (Python/D3) (0) | 2023.11.16 |
[SWEA] 2070. 큰 놈, 작은 놈, 같은 놈 (Python/D1) (2) | 2023.11.12 |
[SWEA] 2071. 평균값 구하기 (Python/D1) (1) | 2023.11.12 |