[프로그래머스 LV.1] 두 개 뽑아서 더하기 — Python 정답 & 해설

2026. 5. 21. 00:50·코딩테스트/알고리즘

🔗 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
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설
  • [프로그래머스 LV.1] 모의고사 — Python 정답 & 해설
  • [프로그래머스 LV.2] 조건에 맞는 개발자 찾기 — MySQL 정답 & 해설
  • [SWEA 1926] 간단한 369 게임 — Java 풀이 & 해설
작지만 꾸준한 성장으로
작지만 꾸준한 성장으로
contact
  • 작지만 꾸준한 성장으로
    파랑새
    작지만 꾸준한 성장으로
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (3)
      • 코딩테스트 (23)
        • 알고리즘 (12)
        • MYSQL (11)
      • 패션 (0)
      • 독후감 (0)
      • TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mysql
    파이썬
    데이터베이스
    Pandas pivot
    모델 추론
    I/O Bound
    코테
    CPU Bound
    공공데이터 전처리
    프로그래머스 lv.0
    프로그래머스 lv.1
    프로그래머스 lv.2
    Python
    데이터 전처리 파이프라인
    long format
    SWEA
    자바
    코딩테스트
    Pandas melt
    파이썬코테
    Pandas groupby agg
    Programmers
    프로그래머스
    wide format
    알고리즘
    데이터 리모델링
    sql 코딩테스트
    python3
    백준
    와이드 포맷 롱 포맷
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
작지만 꾸준한 성장으로
[프로그래머스 LV.1] 두 개 뽑아서 더하기 — Python 정답 & 해설
상단으로

티스토리툴바