백준(Python) 풀이/수학

백준(Python) 1026번 보물 풀이

개발윗미 2021. 10. 7. 11:26

Python으로 구현한 1026번 보물 문제 풀이입니다.

 

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

 

1026번: 보물

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

www.acmicpc.net


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

result = 0

for i in range(n) :
  result += min(a) * max(b)
  a.pop(a.index(min(a)))
  b.pop(b.index(max(b)))

print(result)

 

n을 입력받고 a와 b는 리스트 형태로 정수형을 입력받는다.

 

이 문제를 해결하기 위해서는 a의 최솟값과 b의 최대값을 곱한 뒤 각 수들의 합을 구해야 한다.

 

하지만, 문제에서 b는 재배열하면 안된다고 했으므로 max( ) 함수를 통해 문제를 해결한다.

 

반복문 내에서 min( ) 함수를 통해 a의 최솟값을 구하고 max( ) 함수를 통해 b의 최댓값을 구하여 result에 더한다.

 

그 후 a에서 현재의 최솟값을 꺼내고 b 또한 현재의 최댓값을 꺼낸다

 

위와 같은 방식으로 n만큼 반복하여 반복문이 종료되면 최종적으로 result 값을 출력한다.