[Swift] 프로그래머스 두 개 뽑아서 더하기
문제 설명
정수 배열 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]
입출력 예 설명
입출력 예 #1
- 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
- 3 = 2 + 1 입니다.
- 4 = 1 + 3 입니다.
- 5 = 1 + 4 = 2 + 3 입니다.
- 6 = 2 + 4 입니다.
- 7 = 3 + 4 입니다.
- 따라서 [2,3,4,5,6,7] 을 return 해야 합니다.
입출력 예 #2
- 2 = 0 + 2 입니다.
- 5 = 5 + 0 입니다.
- 7 = 0 + 7 = 5 + 2 입니다.
- 9 = 2 + 7 입니다.
- 12 = 5 + 7 입니다.
- 따라서 [2,5,7,9,12] 를 return 해야 합니다.
풀이
주어진 배열의 요소를 2개씩 더한 결과를 오름차순으로 출력하는 간단한 문제입니다.
2중 반복문을 이용해 2개씩 더하는 모든 경우의 수를 구하게 되면 중복이 발생하는데 이를 방지하기 위해 Set을 이용하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var result: Set<Int> = []
for i in 0 ..< numbers.count {
for j in i ..< numbers.count {
if i != j {
result.insert(numbers[i] + numbers[j])
}
}
}
return Array(result).sorted()
}
- 2중 for 문을 이용해 배열에서 2개씩 뽑아서 더합니다.
- 더한 결과 값들을 중복되지 않게 저장하기 위해 Set에 저장합니다.
- Set을 배열로 형변환 시켜준 후 정렬하여 출력합니다.
댓글남기기