## K번째 큰 수
현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가
여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려
고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력
하는 프로그램을 작성하세요.
만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값
은 22입니다.
▣ 입력설명
첫 줄에 자연수 N(3<=N<=100)과 K(1<=K<=50) 입력되고, 그 다음 줄에 N개의 카드값이 입력
된다.
▣ 출력설명
첫 줄에 K번째 수를 출력합니다. K번째 수는 반드시 존재합니다.
▣ 입력예제 1
10 3
13 15 34 23 45 65 33 11 26 42
▣ 출력예제 1
143
============================================================================
풀이
N, K = map(int, input().split())
a = list(map(int, input().split()))
res =set()
for i in range(N):
for j in range(i+1, N):
for m in range(j+1, N):
res.add(a[i]+a[j]+a[m])
#set()에는 sort가 없어서 다시 리스트로 변환한다.
res = list(res)
res.sort(reverse=True)
print(res[K-1])
참고 개념:
set() 함수
- set은 영어로 집합이라는 뜻, 중복되지 않은 원소를 얻고자 할때 사용
- set을 선언하고 그 안에 계속 추가하고 싶다면 .add()를 사용
-> 반드시 하나의 숫자 혹은 글자, 문장 , 튜플만이 가능하다.
sort() vs sorted()
sort() 함수는 리스트명.sort() 형식으로, "리스트형의 메소드" 이며 리스트 원본값을 직접 수정
sort()함수의 리턴값은 None이므로 정렬된 값은 리턴되지 않는다.
sorted()함수는 sorted(리스트명) 형식으로 "내장 함수"이며 리스트 원본값은 그대로이고 정렬값을 반환
'CodingTest > 기타' 카테고리의 다른 글
[Til] git 명령어 정리 (작성중) (0) | 2022.05.10 |
---|---|
[Python_코테공부] 회문 문자열 검사 (0) | 2021.12.30 |
[Python_코테공부] 주사위 게임 (0) | 2021.12.24 |
[Python_코테공부] 소수(에라토스테네스 체) (0) | 2021.12.20 |