반응형
밑의 링크는 프로그래머스에서의 문제 링크입니다.
주의해야 할 점
매개변수로 주어지는 두 리스트 A, B의 길이가 서로 다르다면 좀 더 어려울 수도 있는 문제라고 생각됩니다.
이번 문제에서는 매개변수의 두 리스트 A, B의 길이가 같습니다.
굳이 주의할 점은 아니지만 두 리스트의 길이를 저장하려면 그냥 A, B 중 한 리스트의 길이만 재서 저장하면 됩니다.
생각한 풀이 과정
- 최종적으로 누적된 최솟값을 저장할 min_result 변수를 만들어줍니다. 이 변수에 값을 더해나갈 것이므로 0으로 초기화합니다.
- 최종적으로 누적된 최솟값을 구하기 위해서 A에서의 최댓값을 B에서의 최솟값과 곱해서 min_result에 더하고, A에서의 그 다음으로 큰 값을 B에서의 그 다음으로 큰 값과 곱해서 min_result에 더하는 과정을 마지막 값까지 차례로 하면 됩니다.
- 매개변수로 주어진 A에서 내부의 값을 오름차순으로 정렬합니다.
- 매개변수로 주어진 B에서 내부의 값을 내림차순으로 정렬합니다.
- 인덱스 0부터 끝까지 A와 B의 같은 인덱스에 있는 값을 곱하고 min_result에 더합니다.
- 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
제출 결과
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글