728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12941
문제 분석
길이가 같은 두 배열의 원소를 하나씩 뽑아 곱하는 걸 배열 길이만큼 반복해 각각의 결과를 더함
더한 결과값이 최소가 되는 경우를 구하는 문제
아이디어
처음엔 탐색문제라 생각해서 모든 경우를 다 구해서 최솟값을 구하려했음...-> 구현 복잡하고 비효율적
다른 사람 풀이보니 두 배열을 오름차, 내림차순 정렬해서 각 인덱스끼리 곱했음-> 문제 원리 파악해서 구현
정답코드
def solution(A,B):
A.sort(reverse = True)
B.sort()
answer = 0
for i in range(len(A)):
answer += (A[i] *B[i])
return answer
하려고 했던 방법도 가능은 할 것 같긴한데, 언제나 더 괜찮은 방법 없나 생각하는 습관이 중요한듯
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
프로그래머스 짝지어 제거하기(lv2, python) (0) | 2023.02.25 |
---|---|
프로그래머스 숫자의 표현(lv2, python) (0) | 2023.02.25 |
프로그래머스 올바른 괄호(lv2, Python) (0) | 2023.02.24 |
프로그래머스 - 소수찾기 (Python) (0) | 2023.02.21 |
프로그래머스 최소 직사각형(lv1, python) (0) | 2023.02.21 |