본문 바로가기
코딩테스트

[백준][파이썬]1026번: 보물

by 과아아앙 2021. 4. 14.

문제 출처 : www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

내 풀이(성공)

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에 더하는 식으로 코드를 짰다.