알고리즘/백준

[백준 / Python] 1026번 보물 | 초코더

cloud_nice 2020. 1. 13. 16:27

https://www.acmicpc.net/problem/1026

 

1026번: 보물

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

www.acmicpc.net

접근법

A배열을 큰순서로 정렬하고, B배열을 작은순으로 정렬하여 곱해주었을때 합이 가장 작게 나옵니다.

저는 이 문제를 풀때 어떻게 푸는지 방법보다 입력받아오는 것에서 많이 헷갈렸기 때문에 이부분을 좀 정리해보겠습니다.

 

입력부분

제가 첨에는 for _ in range(N) 반복문안에다가 a.append(list(map(int,input().split())))을 넣었더니 계속 오류가났습니다.

이 문제의 입력은 1 이런식으로 받아오는 것이 아니라 1 1 요런식으로 받아오기때문에 입력받을때

                       1

굳이 반복문을 써줄 필요가 없었습니다. 헷갈리지 않게 잘 정리해 둬야겠습니다.

 

그리고 의문점 중 하나가 문제에서 B배열은 재배열하지 말라고 하였는데.. 저는 재배열을 한것같은데 이게 맞았습니다로 떠서 맞는건지..틀린건지.. ㅎㅎ

 

나의 풀이

N = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort(reverse=True)
b.sort()
answer=0
for i in range(N):
    answer+=a[i]*b[i]
print(answer)