문제 출처 : www.acmicpc.net/problem/1026
내 풀이(성공)
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
answer = 0
a.sort()
for i in range(n):
x = a[i]
y = b.pop(b.index(max(b)))
answer += x * y
print(answer)
설명
문제의 해결방법 자체는 아주 쉬웠다.
a와 b를 서로 가장 큰 수와 가장 작은 수 끼리 곱해서 더하면 되는 문제이다.
다만, 조건이 하나 있는 문제였다.
조건은 b를 재정렬하면 안된다는 것이었다.
정렬만 하지 않으면 되니 a는 정렬을 해주어 순서대로 뽑았고 b는 pop()을 이용해 최댓값부터 뽑아서 서로 곱해
answer에 더하는 식으로 코드를 짰다.
'코딩테스트' 카테고리의 다른 글
[백준][파이썬]9625번: BABBA (0) | 2021.05.13 |
---|---|
[백준][파이썬]1764번: 듣보잡 (0) | 2021.04.15 |
[백준][파이썬]6996번: 애너그램 (0) | 2021.04.14 |
[백준][파이썬]11067번: 모노톤길 (0) | 2021.04.14 |
[백준][파이썬]18870번: 좌표 압축 (0) | 2021.04.14 |