최대 1 분 소요

K 번째 큰 수

문제 정리

입력

10 3 // n, k
18 54 46 52 28 22 23 53 28 40 // 요소가 n개인 리스트

처리 과정

  1. 리스트 중에 3개의 수를 뽑기
  2. 3개의 수를 합한 수를 담을 자료구조 (set - 중복 포함X)
  3. 그 자료구조에 담긴 수들중 k번째 큰 수 찾기

출력

152

풀이

import sys
sys.stdin = open("./input/in3.txt", "rt")

n,k = map(int, input().split())
lst = list(map(int, input().split()))

# 중복을 제거하는 자료구조 set
res = set() # res에 중복된 값을 넣으면 한번만 들어감

# 세 개의 수를 뽑아서 더한 값을 res에 추가
for i in range(n): # 0부터 n-1까지
    for j in range(i+1, n): # i+1부터 n-1까지
        for m in range(j+1, n):
            res.add(lst[i]+lst[j]+lst[m]) # set 자료구조는 add()로 요소 추가

# set 자료구조는 sort 기능이 없으니 리스트로 변경
res = list(res)
res.sort(reverse=True) # 내림차순 정렬

# k번째 수 출력
print(res[k-1])

정리

  • 중복을 허용하지 않는 자료구조는 set
  • set에 요소 추가: add()
  • set은 정렬할 수 없음 -> 리스트로 변환
  • 중복을 허용하지 않고 3개의 수 뽑기: 3중 for문


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: