백준 1026번 : 보물 (Python)

김현준·2022년 9월 1일

백준

목록 보기
1/214

백준 문제 링크

위 글자를 클릭하면 해당 문제의 내용을 읽을 수 있다.

문제를 읽던 도중

"S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다."

이런 문구가 나와서 정렬을 어떻게 해야할지 고민을 했는데 예제 입출력을 보고 굳이 B에 있는 수를 재배열 하지 않아도 된다고 생각했다.

어쨌든 두 수의 곱을 통해 최소값만 만들면 되니 A의 수를 오름차순으로 정렬하고 B의 수를 내림차순으로 정렬해준다음 서로 곱해주면 값이 정확하게 나온다.

정답 코드는 아래와 같다.

import sys

input=sys.stdin.readline

T=int(input())   #테스트 케이스 개수

L1=list(map(int,input().split()))   #A의 수를 담을 리스트

L2=list(map(int,input().split()))   #B의 수를 담을 리시트

L1.sort() ; L2.sort()   #A의 수와 B의 수를 오름차순으로 정렬

L1.reverse()   #A의 수를 내림차순으로 정렬

sum=0   #최솟값을 저장할 변수

for i in range(T):
    sum+=L1[i]*L2[i]    #반복문으로 A와 B의 곱한값을 sum에 더해준다

print(sum) 
profile
울산대학교 IT융합학부

0개의 댓글