하루한줄 코딩일기

[인프런 - 파이썬 알고리즘 문제풀이] 2.3 K번째 큰 수 본문

Algorithm

[인프런 - 파이썬 알고리즘 문제풀이] 2.3 K번째 큰 수

jjuha 2022. 1. 24. 16:38

인프런 > 파이썬 알고리즘 문제풀이

섹션 2.3 K번째 큰 수

👊 내 문제 풀이

3중 for문을 돌며, 카드 3장을 뽑았을 때 나올 수 있는 모든 합의 경우를 answer 리스트에 저장한다. (단, 이미 존재하는 숫자일 경우 저장하지 않는다.) answer 리스트에는 나올 수 있는 모든 합의 경우가 중복 없이 저장되고, 이를 정렬한 후 K번째로 큰 수를 출력한다.

n, k = map(int, input().split())	#첫 줄에 주어진 n, k 입력받기
cards = list(map(int, input().split()))		#카드열 입력받기
answer=[]

for i in range(n):
	for j in range(i+1, n):
		for m in range(j+1, n):
			if (cards[i]+cards[j]+cards[m]) not in answer:
				answer.append(cards[i]+cards[j]+cards[m])

answer.sort()
print(answer[-k])

채점 결과

 

💡 강의 해답

set() 자료형을 사용하면 중복값은 저장되지 않으므로, 내 코드의 8번째 줄이 필요 없어진다.

*set은 append(x) add(0)

*set은 sort 기능이 없으므로 리스트화 한 후 정렬해야 한다.

n, k=map(int, input().split())
a=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(a[i]+a[j]+a[m])
res=list(res)
res.sort(reverse=True)
print(res[k-1])
Comments