[ BOJ 1026 ] 보물(Python)

uoayop·2021년 5월 18일
0

알고리즘 문제

목록 보기
60/103
post-thumbnail

문제

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

S = A[0]×B[0] + ... + A[N-1]×B[N-1] 일 때, S의 최솟값을 구하는 문제다.


문제 풀이

[B도 정렬 해버리기]

풀기만 하면 그만 아니냐고요 🙂
A는 정렬, B는 역정렬을 한 뒤 곱해서 최솟값을 구했다.

코드

import sys
input = sys.stdin.readline

n = int(input())
a = []
b = []

a = sorted(list(map(int,input().rsplit())))
b = sorted(list(map(int,input().rsplit())),reverse=True)

sum = 0
for i in range(n):
    sum += (a[i]*b[i])

print(sum)

[정렬 하지 않기]

재욱볶음 코드!

코드

N=int(input())
V=list(map(int,input().split()))
M=list(map(int,input().split()))
A=0
for i in range(N):
    A+=min(V)*max(M)
    V.pop(V.index(min(V)))
    M.pop(M.index(max(M)))
print(A)
  • A 배열에서 최솟값, B 배열에서 최댓값을 찾아 곱해준 뒤 S에 더해준다.
  • A 최솟값, B 최댓값은 배열에서 제거해주기
  • 이런 방법두 있구만 👁🕳👁❗️
profile
slow and steady wins the race 🐢

0개의 댓글