자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

k번째 큰 수

얄루몬 2022. 6. 29. 20:45

문제

저장된 리스트에 있는 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