[Python] 백준알고리즘 #1026

r1verfuture·2022년 1월 10일
0

백준알고리즘

목록 보기
86/110

📝 문제

옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.
길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.

S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.
S의 최솟값을 출력하는 프로그램을 작성하시오.

⌨️ 입력

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.

🖨 출력

첫째 줄에 S의 최솟값을 출력한다.

⌨️ 예제 입력 1

5
1 1 1 6 0
2 7 8 3 1

🖨 예제 출력 1

18

⌨️ 예제 입력 2

3
1 1 3
10 30 20

🖨 예제 출력 2

80

⌨️ 예제 입력 3

9
5 15 100 31 39 0 0 3 26
11 12 13 2 3 4 5 9 1

🖨 예제 출력 3

528

📚 내가 제출한 코드

import sys
n = int(sys.stdin.readline())
a = sorted(list(map(int, sys.stdin.readline().split())))
b = sorted(list(map(int, sys.stdin.readline().split())), reverse = True)
result = 0
for i in range(n):
    result += a[i] * b[i]
print(result)

✏️ 내가 제출한 코드에 대한 설명

  • sys.stdin.readline() : 키보드로 입력한 값을 받는 함수 (기존의 input() 보다 속도가 훨씬 빠르다.)
  • a.split() : a를 빈칸 단위로 쪼개서 반환하는 함수
  • map(a, b) : b의 원소 하나하나를 a에 대입한 것을 반환하는 함수
  • sorted(a) : a를 오름차순으로 정렬해서 반환하는 함수 (≠ a.sort())
  • sorted(a, reverse = True) : a를 내림차순으로 정렬해서 반환하는 함수 (≠ a.sort(reverse = True))
  • range(a) : 0부터 a-1까지의 정수를 반환하는 함수
  • 메모리 : 30864 KB
  • 시간 : 72 ms
  • 코드 길이 : 240 B
profile
#iOS #Swift #Developer #Python

0개의 댓글