참고: https://www.acmicpc.net/problem/1026
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
정수 배열의 같은 인덱스끼리 곱하고, 모두 더한 값의 최솟값은
한쪽 배열은 오름차순으로, 다른 배열은 내림차순으로 정렬한뒤
계산하게 되면 최솟값을 만들 수 있다.
예를 들어 첫 번째 예시에서 가장 최솟값인 0과 가장 최댓값인 8을 곱해주면,
0이 되기때문에 더해주는 값에 최솟값을 만들어 줄 수 있다.
import sys
input = sys.stdin.readline
n = int(input())
mins = sorted(list(map(int, input().split())))
maxs = sorted(list(map(int, input().split())), reverse=True)
cnt = 0
for i in range(n):
cnt += mins[i] * maxs[i]
print(cnt)
다음처럼 정렬 후 반환하는 리스트 형태로 sorted 내장함수와
내림차순을 위한 reverse 속성을 사용해준 뒤,
cnt에 누적해서 더해주면 된다.
화이팅 💪
'알고리즘(algo) > 백준' 카테고리의 다른 글
[백준] 1543번 - 문서 검색 (0) | 2023.03.15 |
---|---|
[백준] 11656번 - 접미사 배열 (0) | 2023.03.14 |
[백준] 5567번 - 결혼식 (0) | 2023.03.11 |
[백준] 2583번 - 영역 구하기 (0) | 2023.03.09 |
[백준] 2504번 - 괄호의 값 (0) | 2023.03.07 |