반응형
문제
1부터 100사이 자연수가 적힌 n카드 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록한다.
기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하시오.
1 1 1 2 2 3 4 5 중 2번째 큰 수는 2 입니다. ( 중복은 제거 )
주의
set()은 중복을 제거할 때 사용합니다.
set()은 sort가 없기 때문에 정렬을 하려면 list에 담아 정렬을 해야 합니다.
set() 값을 list에 담아 sort로 정렬을 해주면 오름차순이 디폴트 값이고 reverse=Ture를 통해 내림차순 정렬을 할 수 있습니다.
풀이
n, k=map(int, input().split())
a=list(map(int, input().split()))
#set은 중복 제거에 사용합니다.
res=set()
#첫 번째로 값을 뽑습니다.
for i in range(n):
#두 번째로 값을 뽑습니다.
for j in range(i+1, n):
#세 번째로 값을 뽑습니다.
for m in range(j+1, n):
#set()으로 만든 res에 값을 담습니다.
#set은 중복을 제거하기 때문에 같은 값이 여러번 저장되어도 한 번만 담깁니다.
res.add(a[i]+a[j]+a[m])
#set은 sort가 없기 때문에 정렬을 하려면 list에 담아 정렬을 해야 합니다.
res=list(res)
#list에 담은 res값을 sort로 정렬해 주는데 내림차순 정렬을 위해 reverse값을 True로 줍니다.
res.sort(reverse=True)
print(res[k-1])
반응형
'Algorithm > 파이썬 알고리즘 문제풀이 (코딩테스트대비)' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이] : 정다면체 (0) | 2021.12.16 |
---|---|
[파이썬 알고리즘 문제풀이] : K번째 수 (0) | 2021.12.10 |
[파이썬 알고리즘 문제풀이] : 대표값 (0) | 2021.12.10 |
[파이썬 알고리즘 문제풀이] : 최소 값 구하기 (0) | 2021.12.08 |
[파이썬 알고리즘 문제풀이] : K번째 약수 (0) | 2021.12.05 |
댓글