[백준]1026 보물

iamjinseo·2022년 8월 3일
0

문제풀이-Python

목록 보기
31/134
post-thumbnail
post-custom-banner

문제

입출력


해설

A는 오름차순, B는 내림차순 정렬해서 계산하면 된다.
B는 바꾸면 안된다고 했지만 어쨌든 S의 최솟값을 구하는 문제니까

물론 이런 야매 방식 없이 푸는 분의 해설을 보았는데, A에서 최대값과 B에서 최소값(또는 A에서 최소값과 B에서 최대값)을 골라 곱하기 연산 후 result변수에 더한 다음 두 수를 없애버리는 방법이 있다(진짜 천재신듯)

  s += min(a_list) * max(b_list)
    a_list.pop(a_list.index(min(a_list)))
    b_list.pop(b_list.index(max(b_list)))

출처: https://yoonsang-it.tistory.com/44

코드

import sys
S = int(sys.stdin.readline())

A= list(map(int, sys.stdin.readline().split()))
A.sort()
B= list(map(int, sys.stdin.readline().split()))
B.sort(reverse=True) #내림차순 정렬
# list.sort(reverse=True)는 내림차순 정렬이다.

result = 0
for num1, num2 in zip(A, B): #zip 사용하여 두 개 리스트 반복
    result += num1*num2
print(result)

야매로 풀긴 했는데 어찌됐든 맞음 ㅅㄱ

profile
일단 뭐라도 해보는 중
post-custom-banner

0개의 댓글