코딩테스트대비/기본구현

자릿수의 합

포비용 2025. 2. 2.
import sys
# 10 3
# 18 54 46 52 28 22 23 53 28 40 

# sys.stdin = open("input.txt","rt")
n, m = map(int, input().split())
num_list = list(map(int, input().split()))
num_list.sort(reverse = True)
ans_list = []

for k in range(len(num_list)-2):
    start_num = num_list[k]
    mid_num = num_list[k+1]
    for j in range(k+2, len(num_list)):
        sum_num = start_num + mid_num + num_list[j]
        ans_list.append(sum_num)
        
list_to_set = list(set(ans_list))
list_to_set.sort(reverse=True)
print(list_to_set[m-1])

이렇게 짰는데 테스트 케이스 한개가 안맞았다.

10 3
18 54 46 52 28 22 23 53 28 40 이 경우, output 이 152가 되야하는데 흠...

 

# 정답 코드
import sys
sys.stdin=open("input.txt", "rt")
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])
# itertools 를 쓴방식
from itertools import combinations

n, m = map(int, input().split())
num_list = list(map(int, input().split()))

# 모든 3개 조합의 합 구하기
sum_list = set(sum(comb) for comb in combinations(num_list, 3))

# 정렬 후 m번째 큰 값 출력
print(sorted(sum_list, reverse=True)[m-1])

 

'코딩테스트대비 > 기본구현' 카테고리의 다른 글

자릿수의 합  (0) 2025.02.02
대표값(enumerate idx 이슈)  (0) 2025.02.02
k번쨰 수  (0) 2025.02.02
k번째 약수  (0) 2025.02.02
정다면체(기본구현)  (0) 2025.02.02

댓글