🔗 1. 문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/68644
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📝 2. 문제 요구사항 정리
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 더해서 만들 수 있는 모든 수를 배열에 담아 오름차순으로 정렬하여 리턴하는 문제입니다.
- 최종 출력 배열: 중복 없이 오름차순 정렬된 합산 배열
- 정렬 조건: 더해서 나온 값들을 기준으로 오름차순(ASC) 정렬
💡 3. 핵심 개념
✔ 1) 모든 조합의 합 구하기 (이중 for문)
서로 다른 인덱스의 두 수를 더해야 하므로, 첫 번째 숫자를 가리키는 x 루프와 그 다음 인덱스부터 끝까지 가리키는 y 루프를 도는 이중 반복문이 필요합니다.
✔ 2) 중복 값 제거하기 (Set 자료형)
동일한 인덱스가 아니더라도 숫자를 더하다 보면 똑같은 합산 결과(중복 값)가 나올 수 있습니다.
이를 효율적으로 필터링하기 위해 중복을 허용하지 않는 파이썬의 set() 자료형을 활용합니다.
✔ 3) 결과 정렬 후 반환 (List 변환 & 정렬)
set 자료형은 내부적으로 순서(인덱스)가 없기 때문에 정렬 함수를 바로 쓸 수 없습니다.
따라서 다시 리스트(list) 형태로 변환해 준 뒤 .sort()를 사용하거나, sorted() 함수를 이용해 오름차순 정렬된 최종 리스트를 만들어 반환합니다.
✅ 4. 정답 Python 코드
def solution(numbers):
combination = []
# 1. 이중 for문으로 서로 다른 인덱스의 모든 합을 구하기
for x in range(len(numbers)):
for y in range(x + 1, len(numbers)):
combination.append(numbers[x] + numbers[y])
# 2. set으로 중복을 제거하고 list로 변환
answer = list(set(combination))
# 3. 오름차순 정렬 후 반환
# (가능) return sorted(set(combination))
answer.sort()
return answer
💬 5. 풀이하면서 느낀 점
배열 안에서 서로 다른 요소를 조합해 계산할 때 이중 for문의 인덱스 제어 범위(range)를 정확하게 설정하는 것,
그리고 for문이 도는 기준 배열을 명확하게 인지하는 것이 중요하다고 느꼈습니다.
특히 중간 과정에서 발생하는 동일한 데이터 결과들을 걸러내기 위해 파이썬의 set 자료형을 활용하는 흐름이 인상 깊었습니다. 리스트와 셋의 성질 차이(중복 허용 여부, 출력 형태, 순서 유무)에 대해 완벽하게 복습할 수 있었고, .sort()와 sorted() 함수의 반환값 메커니즘 차이까지 정확하게 짚고 넘어갈 수 있는 좋은 연습이 되었습니다.
궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊
'코딩테스트 > 알고리즘' 카테고리의 다른 글
| [프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설 (0) | 2026.06.11 |
|---|---|
| [프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설 (0) | 2026.05.22 |
| [프로그래머스 LV.1] 모의고사 — Python 정답 & 해설 (0) | 2026.05.21 |
| [프로그래머스 LV.2] 조건에 맞는 개발자 찾기 — MySQL 정답 & 해설 (0) | 2025.11.27 |
| [SWEA 1926] 간단한 369 게임 — Java 풀이 & 해설 (0) | 2025.11.22 |