[백준] 1026 보물

새싹·2021년 11월 18일
0

📌문제 링크

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

💡 문제 풀이

A의 최솟값 * B의 최댓값을 계속 더하면 되겠구나.. 생각해서
A를 오름차순 정렬, B를 내림차순 정렬해서 곱했다
B를 재배열하지 말라길래 ㅇㅇB는 안건드릴게 하고 새로운 배열에다 B 재배열한 걸 넣어줬는데 이렇게 풀라는게 맞는지는 모르겠지만 맞긴맞았다

📋코드

# 1026 보물
import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))

A.sort()
sorted_B = sorted(B, reverse=True)

result = 0
for i in range(n):
    result += A[i] * sorted_B[i]

print(result)

추가

진짜로 B를 재배열하지 않고 풀 수 있는 방법이 뭐가있을까 생각하다가 찾아보니 최솟값, 최댓값을 찾아 pop을 하는 방법이 있었다

# 1026 보물
import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))

A.sort()

result = 0
for i in range(n):
    result += A[i] * B.pop(B.index(max(B)))

print(result)


시간과 메모리의 차이는 없었다

0개의 댓글