https://school.programmers.co.kr/learn/courses/30/lessons/68644
[문제 설명]
정수 배열 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 |