최솟값 만들기
코딩테스트 연습 - 최솟값 만들기
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱
programmers.co.kr
- 내 풀이 1
- 리스트 sort() 정렬해서 비교
- A의 최솟값과 B의 최댓값끼리 곱하여 더한 값 , A의 최댓값과 B의 최솟값끼리 곱하여 더한 값 중 min() 값 출력
- → A, B 값이 바껴도 각각의 최솟값, 최댓값을 곱하면 값이 같기때문에 두개 모두 구해서 비교할 필요 없음...
from collections import deque
def solution(A,B):
A.sort()
B.sort()
sum1=0
sum2=0
answer = 0
for i in range(len(A)):
sum1+=A[i]*B[-i-1]
sum2+=A[-i-1]*B[i]
answer=min(sum1,sum2)
return answer
- 내 풀이2
- deque 사용해보기
from collections import deque
def solution(A,B):
A.sort()
B.sort()
queueA=deque(A)
queueB=deque(B)
answer = 0
while queueA:
a=queueA.popleft()
b=queueB.pop()
answer+=a*b
return answer
- 다른 사람 풀이
- zip() 함수 사용해서 한 번에 계산
def solution(A,B):
return sum(a*b for a,b in zip(sorted(A), sorted(B, reverse=True)))
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [정렬] H-Index (0) | 2022.04.21 |
|---|---|
| [프로그래머스] [Level 2] 최댓값과 최솟값 (0) | 2022.04.21 |
| [프로그래머스] [Level 2] [스택/큐] 주식가격 (0) | 2022.04.20 |
| [프로그래머스] [Level 2] 피보나치 수 (0) | 2022.04.20 |
| [프로그래머스] [Level 2] 행렬의 곱셈 (0) | 2022.04.17 |