본문 바로가기
Algorithm/파이썬 알고리즘 문제풀이 (코딩테스트대비)

[파이썬 알고리즘 문제풀이] : k번째 큰 수

by 오주현 2021. 12. 8.
반응형
문제

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])
반응형

댓글