작성: Corn/sec, ChatGPT, 편집: Corn/sec
프로그래머스 '최댓값 만들기 (2)' 문제는 주어진 리스트에서 가장 큰 두 숫자를 찾아 곱하는 문제입니다. 간단해 보이지만, 리스트 정렬을 어떻게 활용하느냐에 따라 풀이 방식이 달라질 수 있습니다.

# 최대값을 만든다 = 가장 큰 두 수를 선택해서, 곱한다.
def solution(numbers):
max_num = sorted(numbers)[::-1] # 내림차순 정렬
return max_num[0] * max_num[1] # 가장 큰 두 수 곱하기
def solution(numbers):
numbers.sort() # 리스트 자체를 정렬
return numbers[-2] * numbers[-1] # 가장 큰 두 수 곱하기
| 구분 | sorted(list) | list.sort() |
| 원본 리스트 변경 여부 | ❌ 변경되지 않음 | ✅ 원본 리스트 변경 |
| 반환값 | 정렬된 새로운 리스트 반환 | None (리스트 자체 정렬) |
| 사용법 | sorted(numbers, reverse=True) | numbers.sort(reverse=True) |
| 메모리 사용 | 새로운 리스트를 생성 (메모리 추가 사용) | 리스트 자체를 정렬 (메모리 절약) |
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
# sorted() 사용
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 1, 2, 3, 4, 5, 5, 6, 9]
print(numbers) # 원본 리스트 변경 없음: [3, 1, 4, 1, 5, 9, 2, 6, 5]
# sort() 사용
numbers.sort()
print(numbers) # 원본 리스트 변경됨: [1, 1, 2, 3, 4, 5, 5, 6, 9]
| 상황 | 추천 정렬 방식 |
| 원본 리스트를 유지해야 함 | sorted() 사용 |
| 메모리를 아껴야 하고 원본 변경 가능 | sort() 사용 |
| 내림차순 정렬이 필요함 | sorted(numbers, reverse=True) or numbers.sort(reverse=True) |
문제 상황에 따라 sorted()와 sort() 중 적절한 방식을 선택하면 효율적인 코드 작성이 가능합니다! 🚀
def solution(numbers):
num1 = 0
num2 = 0
answer = 0
numbers.sort()
num1 = numbers.pop()
num2 = numbers.pop()
answer = num1 * num2
return answer
| [프로그래머스 풀이]: Lv.1 / 약수의 합 (0) | 2025.02.05 |
|---|---|
| [프로그래머스 풀이]: Lv.0 / 세균 증식 (0) | 2025.02.04 |
| [프로그래머스 풀이]: Lv.0 / 배열 뒤집기 (0) | 2025.01.29 |
| [프로그래머스] Lv.0 "0 떼기" (0) | 2024.12.31 |
| [프로그래머스 풀이]: [PCCE 기출문제] 6번 / 가채점 (0) | 2024.08.16 |