프로그래머스, 최솟값 만들기
TL;DR
- 주어진 문제 조건을 구현(implementation)할 수 있는지
문제 분석
1. 길이가 같은 자연수로 이루어진 배열 A,B에서 두 수를 뽑아 곱해서 누적하여 더한다.
2. 이 때, 더한 결과가 최소가 되는 값을 반환한다.
- 1 ~ 2 : 해결해야 하는 문제 조건에 대해서 설명하고 있다.
입출력 형태
- 입출력 예시를 확인해보면 문제 해결을 위한 접근방법이 떠오른다.
- 예시 1번은 1 * 5, 2 * 4, 4 * 4를 해서 더한 값이 최소가 된다.
- 예시 2번은 1 * 4, 2 * 3을 해서 더한 값이 최소가 된다.
- 즉, A에서 작은 원소와 B에서 큰 원소 순서대로 곱해서 더한 값이 최소값이 되는 것이다.
풀이
def solution(A,B):
A.sort()
B.sort(reverse=True)
return sum([a * b for a, b in zip(A, B)])
- 이를 위해서 A를 오름차순으로 정렬하고, B를 내림차순으로 정렬한다.
- 길이가 같은 배열이므로 zip을 통해 두 배열의 원소를 동시에 접근할 수 있다.
- 각 배열의 원소를 곱한 리스트를 sum을 통해 더한 결과를 반환하면 된다.
반응형
'개발 > Algorithm' 카테고리의 다른 글
[리트코드] Odd Even Linked List(python) (0) | 2021.06.15 |
---|---|
[리트코드] Swap Nodes in Pairs(python) (0) | 2021.06.15 |
[프로그래머스] N개의 최소공배수(python) (0) | 2021.06.13 |
[프로그래머스] 최대값과 최소값(python) (0) | 2021.06.12 |
[리트코드] Add Two Numbers(python) (0) | 2021.06.11 |