[백준] 1026번 - 보물

yerimstar·2021년 11월 12일
0

정렬

목록 보기
1/8

아이디어

B 리스트의 최댓값과 A의 최솟값을 순서대로 곱해주면 된다.
문제에 있는 식을 생각한다면 정렬 작업을 우선 수행한 다음 곱해주는 것이 맞으나, 최종적으로 도출해야 하는 값이 S의 최솟값이므로 최댓값과 최솟값만 곱해줘도 된다고 생각했다.

코드

import sys

N = int(sys.stdin.readline())
A = list(map(int,sys.stdin.readline().split()))
B = list(map(int,sys.stdin.readline().split()))

S = 0
for _ in range(N):
    tmpA = min(A)
    tmpB = max(B)
    S += tmpA*tmpB
    A.remove(tmpA)
    B.remove(tmpB)
print(S)

최솟값, 최댓값을 구하고 remove할 수도 있지만, pop을 활용해도 좋을 것 같다.

# 보물
# B 리스트의 최댓값과 A의 최솟값을 순서대로 곱해주면 된다.
import sys

N = int(sys.stdin.readline())
A = list(map(int,sys.stdin.readline().split()))
B = list(map(int,sys.stdin.readline().split()))

S = 0
for _ in range(N):
    S += min(A) * max(B)
    A.pop(A.index(min(A)))
    B.pop(B.index(max(B)))
print(S)

=> 백준으로 테스트해본 결과, 메모리와 시간은 동일한 값이 나왔다.

profile
백엔드 개발자

0개의 댓글