문제
저장된 리스트에 있는 1 ~ 100의 사이의 값을 가진 n개의 리스트에서 3개의 값을 뽑아 더한 뒤 k번째 큰 수를 찾는 문제
풀이 해설
- 3개의 값을 뽑아 더하는 과정이라면 3중 for문을 사용해서 모든 값을 더해준다.
- 이때 값의 중복은 허용하지 않기 때문에 set 자료 구조를 사용해 중복을 제거해준다.
- 다시 set을 list화 시켜 정렬을 한다. (이때 정렬은 내림차순이다.)
- 정렬 시킨 list에서 k-1 번째 값을 출력해준다. (k-1인 이유는 index가 0부터 시작하기 때문이다.)
n, k = map(int,input().split())
card = list(map(int,input().split()))
result = set()
for i in range(n):
for j in range(i+1,n):
for m in range(j+1, n):
result.add(card[i] + card[j] + card[m])
result = list(result)
result.sort(reverse=True)
print(result[k-1])
3중 for문이 도는 방식
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
뒤집은 소수 (0) | 2022.06.30 |
---|---|
소수(에라토스테네스 체) (0) | 2022.06.30 |
자릿수의 합 (0) | 2022.06.30 |
정다면체 (0) | 2022.06.29 |
대표 값 (0) | 2022.06.29 |