-
최댓값 만들기 (2)
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
내 풀이
def solution(numbers):
answer = []
pos = []
neg = []
if len(numbers) == 2:
return numbers[0] * numbers[1]
for n in numbers:
if n > 0:
pos.append(n)
elif n < 0:
neg.append(n)
pos.sort()
neg.sort()
if len(pos) >= 2:
answer.append(pos[-1] * pos[-2])
if len(neg) >= 2:
answer.append(neg[-1] * neg[-2])
if len(answer) == 0:
return 0
return max(answer)
반례가 계속 생겨서 긴 코드가 되었다.
다른 사람 풀이
def solution(numbers):
numbers = sorted(numbers)
return max(numbers[0] * numbers[1], numbers[-1]*numbers[-2])
굳이 양수 배열 음수 배열로 나눌 필요가 없이 정렬을 하면 됐다.
앞에서 두개는 음수 중 가장 절댓값이 큰거, 뒤에서 두개는 양수 중 가장 절댓값이 큰게 되고, 배열의 길이가 2인 경우도 모두 해결이 되며 0이 포함된 배열도 해결이 된다...
728x90
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] Lv1. 최소직사각형 파이썬 (0) | 2024.01.20 |
---|---|
[프로그래머스] Lv1. [1차] 다트 게임 파이썬 (0) | 2024.01.20 |
[프로그래머스] Lv1.캐릭터의 좌표 파이썬 (1) | 2024.01.15 |
[프로그래머스] Lv0.직사각형 넓이 구하기 파이썬 (0) | 2024.01.15 |
[프로그래머스] Lv1.기사단원의 무기 파이썬 (1) | 2024.01.15 |