관리 메뉴

솜씨좋은장씨

[Programmers] 최솟값 만들기 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 최솟값 만들기 (Python)

솜씨좋은장씨 2022. 2. 23. 08:45
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 최솟값 만들기 입니다.

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

👨🏻‍💻 문제 풀이

길이가 같은 두 개의 배열에서 하나씩 꺼낸 값의 곱을 계속 더한 누적 합 중 가장 작은 값을 구하는 문제입니다.

 

효율성까지 보길래 어려운가....! 했는데 조금만 생각해보면 정말 쉬운 문제였습니다.

가장 작은 값을 만들기 위해서는 

하나의 배열 ( A ) 에서는 가장 큰 값 / 또 다른 배열 ( B ) 에서는 가장 작은 값을 꺼내어 곱한 값을

계속 더해주면 됩니다.

이에 A와 B를 sorted로 정렬 해주는데 이때 A는 오름차순 B는 내림차순으로 정렬합니다.

 

A와 B에서 각각 값을 꺼내오는 것은 zip을 활용하여 하나씩 순차적으로 꺼내오도록 했습니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def solution(A,B):
    answer = 0
    for a, b in zip(sorted(A), sorted(B, reverse=True)):
        answer += a * b
    
    return answer

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments