본문 바로가기

알고리즘/프로그래머스 문제풀이

프로그래머스 최솟값 만들기(lv2, Python)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 분석

길이가 같은 두 배열의 원소를 하나씩 뽑아 곱하는 걸 배열 길이만큼 반복해 각각의 결과를 더함

더한 결과값이 최소가 되는 경우를 구하는 문제

 

아이디어

처음엔 탐색문제라 생각해서 모든 경우를 다 구해서 최솟값을 구하려했음...-> 구현 복잡하고 비효율적

다른 사람 풀이보니 두 배열을 오름차, 내림차순 정렬해서 각 인덱스끼리 곱했음-> 문제 원리 파악해서 구현

 

정답코드 

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

하려고 했던 방법도 가능은 할 것 같긴한데, 언제나 더 괜찮은 방법 없나 생각하는 습관이 중요한듯