백준(Python) 풀이/그리디 알고리즘

백준(Python) 12723번 Minimum Scalar Product (Small) 풀이

개발윗미 2021. 12. 15. 21:35

Python으로 구현한 12723번 Minimum Scalar Product (Small) 문제 풀이입니다.

 

https://www.acmicpc.net/problem/12723

 

12723번: Minimum Scalar Product (Small)

You are given two vectors v1=(x1,x2,...,xn) and v2=(y1,y2,...,yn). The scalar product of these vectors is a single number, calculated as x1y1+x2y2+...+xnyn.  Suppose you are allowed to permute the coordinates of each vector as you wish. Choose two permuta

www.acmicpc.net


t = int(input())

for tc in range(1, t + 1) :
  n = int(input())
  a = list(map(int, input().split()))
  b = list(map(int, input().split()))
  a.sort()
  b.sort(reverse=True)

  result = 0
  for i in range(len(a)) :
    result += a[i] * b[i]

  print('Case #%d: %d' % (tc, result))

 

1. 각 테스트케이스마다 a와 b를 입력받아 리스트 형태로 구성한다.

 

2. 스칼라 곱이 가능한 가장 작도록 해야하므로 a는 오름차순으로 정렬하고, b는 내림차순으로 정렬한다.

 

3. 반복문을 통해 리스트 a와 b에 존재하는 값을 하나씩 확인하여 동일한 인덱스의 값을 서로 곱하고 result에 누적한다.

 

4. 반복문이 종료되면 출력 형식에 맞추어 result 값을 출력한다.