https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
n = int(input())
a = list(map(int,input().split())) # 정렬가능한 a리스트
b = list(map(int,input().split())) # 정렬불가능한 b리스트
idx = [x for x in range(n)] # b의 정렬된 인덱스를 저장하기 위한 인덱스
lst = []
for i in range(n):
lst.append((b[i],idx[i])) # 현재 b의 숫자들을 인덱스와 함께 튜플로 저장
lst.sort(key=lambda x: x[0]) # b가 작은 기준으로 튜플을 정렬
sort_idx = []
for i in lst:
sort_idx.append(i[1]) # 인덱스만 뽑아서 저장
result = 0
a.sort(reverse=True) # b가 오름차순 정렬했으므로 a는 내림차순 정렬(최대*최소 해야 최솟값 되기 때문)
for i in range(n):
result += a[i]*b[sort_idx[i]] # 저장한 인덱스를 이용해 (a)최대*(b)최소해서 곱한다음 누적합
print(result)
'백준' 카테고리의 다른 글
백준 1181. 단어정렬 (0) | 2023.09.14 |
---|---|
백준 1920. 수 찾기 (0) | 2023.09.12 |
백준 1931.회의실 배정 (0) | 2023.09.04 |
백준 11047. 동전 0 (0) | 2023.09.03 |
백준 1463. 1로 만들기 (0) | 2023.09.03 |