Dev/Algorithm

14. [알고리즘] K번째 큰 수

VIPeveloper 2021. 4. 29. 23:50
728x90
반응형

내 생각

  1. 콤비네이션을 이용해야겠다고 생각했음
  2. 리스트의 3개 뽑은 콤비네이션을 구함
  3. 합을 계산해서 다른 리스트에 넣음
  4. ~번째 == idx-1

구현

#K번째 큰 수
from itertools import combinations
n,k = map(int,input().split())
arr = list(map(int,input().split()))
combi = combinations(arr,3)
ar = []
for c in combi:
    ar.append(sum(c))
ar.sort(reverse=True)
print(ar)
ar = list(set(ar))  # 간과했던 부분
ar.sort(reverse=True)
print(ar)
print(ar[k-1])

다른사람 생각

  1. 삼중포문을 사용할 생각을 했음
  2. 여기서 내가 놓쳤는데, 숫자가 중복된 것이 있을 수 있었다.
  3. 따라서 애초에 res가 set구조임으로 set이라는 자료구조를 이용해서 중복되는 값을 지울 수 있다.
  4. 정렬 후 번째 구하기

코드

#K번째 큰 수
n,k = map(int,input().split())
arr = 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(arr[i]+arr[j]+arr[m])
res = list(res)
res.sort(reverse=True)
print(res[k-1])
728x90
반응형

'Dev > Algorithm' 카테고리의 다른 글

75. [TIL] 오늘의 배움일지 ( 21-09-17 )  (0) 2021.09.17
15. [알고리즘] 정다면체  (0) 2021.05.02
13. [알고리즘] K번째 작은 수  (0) 2021.04.29
12. [알고리즘] K번째 약수  (0) 2021.04.29
[백준] 플러드필  (0) 2021.04.01