1. 문제
1~100 사이 자연수 적힌 카드 n장을 가짐, 중복이 있을 수 있음
이 중 3장을 뽑아 모든 경우의 수 기록
기록한 값 중 k번째로 큰 수를 출력하라
첫 줄에 자연수 n, k가 입력
그 다음 줄에 카드값이 입력
2. 풀이
import sys
sys.stdin=open("input.txt", "r")
n, k = map(int, input().split()) # 첫번째 줄 n, k 입력
a = list(map(int, input().split())) # 두번째 줄 리스트 입력
res = set() # 중첩되는 요소를 갖지 않는 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]) # 합을 res 에 요소로 추가. 이때 중복되는 값들은 추가되지 않음.
res.sort(reverse = True) # 내림차순으로 정렬
print(res[k-1]) # k번째 수 출력
3. 배운 내용
1) a,b = map(int, input().split()) : 입력된 값을 띄어쓰기로 구분하며 이를 int 자료형으로 바꾼다.
2) 리스트명 = list( map(int, input().split()) ): 입력된 값을 띄어쓰기로 구분하여 리스트 요소로 추가
2) 자료형 set: 고유한 값들의 집합. 중복된 값을 허용하지 않으며 순서가 없다.
set.add(자료값): set의 요소로 추가. 이 때 중복되는 값은 추가되지 않음.
3) res.sort() / res.sort(reverse = True): 리스트 값 오름차순 정렬 / 내림차순 정렬
'백앤드 개발 > 코딩테스트' 카테고리의 다른 글
[파이썬 문제 풀이] 소수 (1) | 2023.10.10 |
---|---|
[파이썬 문제풀이] 자릿수의 합 (0) | 2023.10.10 |
[파이썬 문제풀이] 정다면체 (1) | 2023.10.07 |
[파이썬 문제 풀이] 대표값 (0) | 2023.10.05 |
[파이썬 문제 풀이] K번째 약수 (1) | 2023.10.05 |