본문 바로가기

Algorithm

프로그래머스 - 두 개 뽑아서 더하기

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]

 


해결 

import Foundation

func solution(_ numbers:[Int]) -> [Int] {
    var arr: Set<Int> = []
    
    for i in 0..<numbers.count {
        for j in (i + 1)..<numbers.count {
            answer.insert(numbers[i] + numbers[j])
        }
    }
    
    return Array(arr).sorted { $0 < $1 }
}

 

해결 방안 설명 

입력된 배열에서 두 개의 수를 더한 값을 저장하는 배열을 만들 때, Set을 사용해서 중복되는 값이 없도록 합니다. 

 

그리고 반복문을 사용해 입력된 배열에서 가장 첫번째부터 마지막 숫자까지 자기 자신을 제외한 배열 내의 숫자를 더합니다. 그리고 이를 새로운 배열에 넣습니다. (위에서 Set으로 만들었으므로 중복된 값이 추가되지 않습니다.)

 

마지막으로 더한 값이 있는 배열을 오름차순으로 정렬합니다.