k번째 큰 수

이세진·2022년 4월 15일
0

코테준비

목록 보기
3/87

생성일: 2022년 1월 6일 오전 1:25

구현 코드

# k번째 큰 수
import sys
sys.stdin = open("input.txt", "rt")
n, k = map(int, input().split())
numList = list(map(int, input().split()))
sumList = []
for i in range(n):
    for j in range(i+1, n):
        for l in range(j+1, n):
            num = numList[i]+numList[j]+numList[l]
            sumList.append(num)
sumList.sort(reverse=True)

count = 0
predNum = 0
for num in sumList:
    if predNum != num:
        count += 1
        predNum = num
    if count == k:
        print(num)
        break

모범 답안

# k번째 큰 수
import sys
sys.stdin = open("input.txt", "rt")
n, k = map(int, input().split())
numList = list(map(int, input().split()))
sumList = set()
for i in range(n):
    for j in range(i+1, n):
        for l in range(j+1, n):
            num = numList[i]+numList[j]+numList[l]
            sumList.add(num)
sumList = list(sumList)
sumList.sort(reverse=True)
print(sumList[k-1])

차이점

  • 내가 구현한 코드에서는 중복된 수(num)가 있더라도 모두 sumList에 모두 넣고 for문으로 k번째로 큰 수를 찾는 구조라면 모범 정답에서는 set 자료구조를 이용하였다.
  • set에는 중복된 값이 들어가지 않는다. ⇒ 중복된 값을 넣으려고 하면 자동으로 걸러짐
  • set을 이용하면 for문을 사용하지 않고 곧바로 k번째로 큰 수를 리스트에서 출력 할 수 있다.
profile
나중은 결코 오지 않는다.

0개의 댓글