인프런 커뮤니티 질문&답변

thehrto12님의 프로필 이미지
thehrto12

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

3. K번째 큰 수

제가 질문을 잘 이해를 못하는지

해결된 질문

작성

·

174

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

 

1부터 100까지의 자연수 중에 3장을 뽑아서 그 경우의 수 중에서 k번째로 큰 합산을 구하는 거라고 이해를 했습니다.

 

그래서 먼저 중복을 제거해서 내림차순으로 정렬후에,

k번째로 큰 합산이니까 0, 1 번째 합산을 빼놓고 2번째 인덱스를 시작기준으로 k번째의 원소의 합을 더하면 되는게 아닌지 질문드립니다.

 

 

import sys
sys.stdin=open('input.txt', 'rt')
n, k = map(int, input().split())
arr = list(map(int, input().split()))
distinct_arr = list(set(arr))
distinct_arr.sort(reverse=True)
print(k)
print(distinct_arr)
result = int(distinct_arr[0])+int(distinct_arr[1])+int(distinct_arr[k+1])

    
print(result)

 

 

 

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

n개의 숫자가 있다면 여기서 임의로 3개를 뽑아 그 3개의 수를 합한 값을 기록하는 것입니다.

즉 기록된 숫자의 개수는 nC3개의 숫자가 나올겁니다. 이 중에서 k번째로 큰 수를 찾는 것입니다. 이때 k번째 큰 수를 찾을 때 중복된 값을 한 번만 카운팅해서 k번째 큰 수를 찾으라는 의미입니다.

중복된 값의 의미를 예를 들면, 만약 1, 2, 3, 4, 5, 6, 7 중에서 3개를 뽑을 때 1, 4, 7를 뽑으면 합이 12이고, 1, 5, 6을 뽑을때도 합이 12로 같아서 12가 중복되는 경우가 있습니다. 이때 k번째를 따질때 12는 한 번만 번째를 카운팅하라는 것입니다.

thehrto12님의 프로필 이미지
thehrto12
질문자

아.. 중복된 값을 한번만 카운팅하라는 말씀이시군요,, 그럼 중복된 합산이 여러개가 있어도 무조건 두번째를 채택하라는 말씀이실까요? 답변 감사합니다

thehrto12님의 프로필 이미지
thehrto12

작성한 질문수

질문하기