풀이
- 단순히 해결하기 위해선 a는 오름차순, b는 내림차순 정렬 후
- 첫 번째 코드와 같이 a와b의 인덱스 값을 곱한 값을 누적합 하면 되는 단순한 문제지만.
- 문제의 의도는 a만 정렬하고 b는 정렬하지 않는 것을 중점으로 두고 있기에
- 두 번째 코드와 같이 해결
- b에 있는 가장 큰 값을 제거 하는 방식을 적용
- cnt는 a는 오름차순 정렬을 했기에 순서대로 적용하기 위함.
# 일반적으로 푸는 방식
import sys
input = sys.stdin.readline
n = int(input())
a = sorted(map(int,input().rstrip('\n').split()))
b = sorted(map(int,input().rstrip('\n').split()),reverse=True)
print(sum([a[i]*b[i] for i in range(n)]))
# b를 정렬하지 않고 푸는 방식
import sys
input = sys.stdin.readline
n = int(input())
a = sorted(map(int,input().rstrip('\n').split()))
b = list(map(int,input().rstrip('\n').split()))
result, cnt = 0, 0
while b:
b_mx = max(b)
result += a[cnt]*b_mx
del b[b.index(b_mx)]
cnt += 1
print(result)
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 2217번] 로프 (0) | 2023.08.29 |
---|---|
[백준, 파이썬, 1764번] 듣보잡 (0) | 2023.08.29 |
[백준, 파이썬, 1931번] 회의실 배정 (0) | 2023.08.28 |
[백준, 파이썬, 11399번] ATM (0) | 2023.08.28 |
[백준, 파이썬 , 10817번] 세 수 (0) | 2023.08.28 |