출처 : 프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/12941
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
더보기
먼저, 생각해야 할 부분
1. 합을 줄이려면 각 요소를 최소화 해야한다.
풀이
def solution(A,B):
answer = 0
A.sort()
B.sort(reverse=True)
for i in range(len(A)):
answer += A[i] * B[i]
return answer
각 요소의 크기를 줄이려면 가장 큰 값과 가장 작은 값을 곱하면 된다.
이를 가장 쉽게 할 수 있는 방법은 정렬을 이용하는 방법이다.
하나는 내림차순, 하나는 오름차순으로 정렬하고각 요소를 곱하면 끝!
시간 복잡도
O(NlogN)
알게 된 점
- Pythonic Solution
def solution(A,B):
return sum(x*y for x, y, in zip(sorted(A), sorted(B, reverse=True)))
answer는 필요하지 않을까 했는데 그마저도 필요가 없네
고찰
-
Github
'알고리즘 > Python' 카테고리의 다른 글
[python] 프로그래머스 - 개인정보 수집 유효기간 (0) | 2023.03.09 |
---|---|
[python] 프로그래머스 - 성격 유형 검사하기 (0) | 2023.03.09 |
[python] 프로그래머스 - 숫자 블록 (0) | 2022.07.15 |
[python] 프로그래머스 - 3 x n 타일링 (0) | 2022.07.14 |
[python] LeetCode #1 - Two Sum (0) | 2022.07.13 |