728x90
반응형
문제 요약
길이가 N인 정수 배열A와 B가 있다.
S = A[0]*B[0] + ... + A[N-1]*B[N-1]
S값이 최소가 되도록 A의 수만 재배열하고, 구한 S값을 출력한다.
입력
첫째 줄에 N이 입력
둘째 줄에 A에 있는 N개의 수가 순서대로 입력
셋째 줄에 B에 있는 수가 순서대로 입력
N은 50보다 작거나 같은 자연수
A, B 각 원소는 100보다 작거나 같은 음이 아닌 정수
출력
첫째 줄에 S의 최솟값 출력
입출력 예시
입력 | 출력 |
5 1 1 1 6 0 2 7 8 3 1 |
18 |
작성코드
N = int(input())
A = B = []
result = 0
A = [int(x) for x in input().split()]
B = [int(x) for x in input().split()]
A.sort()
B.sort(reverse=True)
for i in range(N):
result += A[i] * B[i]
print(result)
피드백
내가 찾은 패턴
- A와 B를 오름차순, 내림차순으로 정렬하여 계산
어차피 원하는 결과를 출력하면 되는 것이기 때문에 A, B 모두 정렬해서 값을 구함
깨달은 것
- 매번 list에 int로 입력받는 것이 어렵다. 2차원 list 초기화 방법과도 비슷한 것 같다. 둘 다 잘 기억해두기.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[구현] 백준 1009번 분산처리 Python 풀이 (0) | 2021.02.20 |
---|---|
[그리디] 백준 2847번 게임을 만든 동준이 Python 풀이 (0) | 2021.02.20 |
[그리디] 백준 1541번 잃어버린 괄호 (0) | 2021.02.19 |
[그리디] 백준 2457번 공주님의 정원 Python 풀이 (0) | 2021.02.16 |
구현 알고리즘 (0) | 2021.02.03 |