프로그래머스/파이썬

두 개 뽑아서 더하기

싱싱한복초이 2025. 1. 26. 10:03

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 설명]

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

[나의 풀이]

def solution(numbers):
    answer = set()  # 중복 방지를 위해 set 사용
    for i in range(len(numbers)):
        for j in range(i + 1, len(numbers)):  # j를 i+1부터 시작
            answer.add(numbers[i] + numbers[j])  # 값 추가

    return sorted(answer)  # 오름차순 정렬하여 리스트로 반환

⭐sorted() 함수는 입력 자료형과 관계없이 항상 리스트로 결과를 반환합니다.

 

[다른 풀이]

from itertools import combinations

def solution(numbers):
    answer = []
    l = list(combinations(numbers, 2))

    for i in l:
        answer.append(i[0]+i[1])
    answer = list(set(answer))
    answer.sort()

    return answer

 

  • combinations(numbers, 2)는 리스트 numbers에서 서로 다른 인덱스를 가진 두 개의 요소를 뽑아 조합을 생성합니다.
  • 조합은 (a, b) 형태의 튜플로 반환되며, 각 요소는 순서를 고려하지 않습니다(즉, (a, b)와 (b, a)는 같은 것으로 처리됨).

 

 

'프로그래머스 > 파이썬' 카테고리의 다른 글

기사단원의 무기  (0) 2025.01.27
폰켓몬_알고리즘(해시)  (0) 2025.01.27
콜라 문제  (0) 2025.01.25
푸드 파이트 대회  (1) 2025.01.24
명예의 전당 (1)  (0) 2025.01.23