• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

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

23.11.16 15:49 작성 23.11.16 15:51 수정 조회수 126

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

질문자

2023.11.17

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