728x90
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한 사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
풀이
def solution(numbers):
answer = []
for n in range(len(numbers)):
for m in range(n+1, len(numbers)):
x = numbers[n] + numbers[m]
if x not in answer:
answer.append(x)
return sorted(answer)
바로 생각난 풀이는 numbers 리스트에서 for를 중첩시켜 n과 n+1로 돌면서 모든 더한 값들을 구한 후, answer 리스트에 해당 값이 존재하지 않을 경우에만 append 후, sorted 해주는 것
소감
간단한 문제지만 for문을 중첩시킨다는 것에 거부감이 있었고, 다른 효율적인 코드가 없을까 했지만 다른 사람들도 대부분 같은 접근법으로 푼 것 같았다. 코딩테스트를 처음 준비하는 사람들에게 연습하기 좋은 문제였다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 최솟값 만들기 - Python (0) | 2020.12.06 |
---|---|
[프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python (0) | 2020.11.09 |
[프로그래머스] Summer/Winter Coding(~2018) - 영어 끝말잇기 / python (0) | 2020.11.09 |
[프로그래머스] Summer/Winter Coding(~2018) - 예산 / python (0) | 2020.11.09 |
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 / python (0) | 2020.11.09 |