[프로그래머스] Level 2. 최솟값 만들기
사용 언어: Python3
문제
처음에는 배열 A의 i 번째 원소와 배열 B의 i 번째 원소의 곱의 합으르 리턴하는 문제인줄 알았으나 그게 아니었다..
두 배열의 원소들의 곱의 합은 맞지만, 인덱스가 달라도 상관 없다.
(하지만 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없다.)
곱의 합의 최솟값을 리턴하는 문제였다.
풀이
내 풀이
import java.util.*;
def solution(A,B):
answer = 0
A.sort()
B.sort(reverse=True)
sum = 0
for i in range(0,len(A)):
sum += A[i] * B[i]
return sum
다른 사람의 풀이
def solution(A,B):
return sum(a * b for a, b in zip(sorted(A), sorted(B, reverse = True)))
zip()
함수를 쓰면 정말 간단하게 해결할 수 있다..
참고
zip 기본 문법
이 글을 참고했다.
zip() 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 터플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환합니다.
>>> numbers = [1, 2, 3]
>>> letters = ["A", "B", "C"]
>>> for pair in zip(numbers, letters):
... print(pair)
...
(1, 'A')
(2, 'B')
(3, 'C')
💛 개인 공부 기록용 블로그입니다. 👻