[Python] 프로그래머스 - 최솟값 만들기
Python에서 두 배열을 반대로 정렬해 곱의 합을 최소화하고, 버블 정렬 대신 sort()로 효율성 문제를 해결한 풀이입니다.
For the English version of this post, see here.
[Python] 프로그래머스 - 최솟값 만들기
풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(A,B):
A.sort()
B.sort(reverse=True)
answer = 0
for i in range(len(A)):
answer += A[i] * B[i]
return answer
- 처음에는
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def solution(A,B):
answer = 0
cnt = len(A)
for i in range(len(A)-1):
cnt -= 1
for j in range(cnt):
if A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
cnt = len(B)
for i in range(len(B)-1):
cnt -= 1
for j in range(cnt):
if B[j] < B[j+1]:
B[j], B[j+1] = B[j+1], B[j]
for i in range(len(A)):
answer += A[i] * B[i]
return answer
다음과 같이 작성했지만, 효율성 테스트에 통과하지 못함
- 파이썬에서는 버블 정렬을 따로 사용하지 않고,
sort()함수를 통해 간단하게 정렬 가능함
sort()
리스트(List) 객체의 내장 메서드
원본 리스트를 오름차순으로 즉시 정렬(in-place)
list.sort(reverse=True)로 내림차순 정렬이 가능하며, 반환값은 None
정렬된 복사본이 필요하면 내장 함수 sorted()를 사용합
list.sort()(리스트 원본 수정)특징: 원본 리스트 자체를 변경하며, 새로운 리스트를 반환하지 않음 (None 반환)