본문 바로가기
알고리즘/프로그래머스 PS

[프로그래머스][Level 2][Python] 최솟값 만들기

by 빛밤하늘 2021. 8. 1.
반응형

밑의 링크는 프로그래머스에서의 문제 링크입니다.

 

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

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

programmers.co.kr

 

 

 

 

 

 

 

 

주의해야 할 

매개변수로 주어지는 두 리스트 A, B의 길이가 서로 다르다면 좀 더 어려울 수도 있는 문제라고 생각됩니다.

이번 문제에서는 매개변수의 두 리스트 A, B의 길이가 같습니다.

굳이 주의할 점은 아니지만 두 리스트의 길이를 저장하려면 그냥 A, B 중 한 리스트의 길이만 재서 저장하면 됩니다.

 

 

 

생각한 풀이 과정

  1. 최종적으로 누적된 최솟값을 저장할 min_result 변수를 만들어줍니다. 이 변수에 값을 더해나갈 것이므로 0으로 초기화합니다.
  2. 최종적으로 누적된 최솟값을 구하기 위해서 A에서의 최댓값을 B에서의 최솟값과 곱해서 min_result에 더하고, A에서의 그 다음으로 큰 값을 B에서의 그 다음으로 큰 값과 곱해서 min_result에 더하는 과정을 마지막 값까지 차례로 하면 됩니다.
  3. 매개변수로 주어진 A에서 내부의 값을 오름차순으로 정렬합니다.
  4. 매개변수로 주어진 B에서 내부의 값을 내림차순으로 정렬합니다.
  5. 인덱스 0부터 끝까지 A와 B의 같은 인덱스에 있는 값을 곱하고 min_result에 더합니다.
  6. min_result의 값을 반환하면 됩니다.



 

 

 

 

 

 

제출한 파이썬 코드

# 길이가 같고 자연수들이 저장되어 있는 두 리스트 A, B가 매개변수로 주어집니다.
def solution(A, B):
    # 최종적으로 누적된 최솟값을 저장할 변수를 선언합니다.
    min_result = 0
    # A 내부의 값들을 오름차순으로 정렬합니다.
    A.sort()
    # B 내부의 값들을 내림차순으로 정렬합니다.
    B.sort(reverse=True)
    # A의 길이를 저장하는 변수를 선언합니다.
    A_len = len(A)

    # 최종적으로 누적된 최솟값을 구하려면
    # A에서는 작은 값부터 큰 값으로, B에서는 큰 값부터 작은 값으로
    # A, B의 같은 인덱스에 있는 값들을 곱하고 min_result에 더하면 됩니다.
    # 리스트의 인덱스를 반복해봅니다.
    for idx in range(A_len):
        # 현재 인덱스에서의 A와 B의 값을 곱하고 min_result에 더해줍니다.
        min_result += A[idx] * B[idx]

    # 최종적으로 누적된 최솟값을 반환합니다.
    return min_result

 

 

 

제출 결과

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글