IOS/Swift Algorithm Level 1
Swift. 두개 뽑아서 더하기
HyeonGyu IM
2020. 10. 3. 13:17
1. 문제
2. 문제풀이에 필요한 조건
- 한배열에 담긴 숫자를 모든 경우의 덧샘에 중복없이 정렬해서 출력하는 문제였다
- 가장 처음 부딪힌것은 반복문에서 배열의 범위를 정하는 것.
- 두번째는 어떻게 i의 시작점보다 뒤로 갈것인지.
- 그리고 중복은 어떻게 처리할 것인지.
- 마지막에는 정렬까지.
3. 풀이
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var result = [Int]()
for i in 0..<numbers.count {
for q in i+1..<numbers.count {
if result.contains(numbers[i] + numbers[q]) == false {
result.append(numbers[i] + numbers[q])
}
}
}
return result.sorted()
}
- 문제를 풀면서 배열의 범위를 numbers.count-1로 해서 줫는데 문제가 하나 생겼다. 반복문을 실행할때에 처음에는 저렇게 해도 상관이 없었지만 두번의 반복문에 동일하게 numbers.count-1로 줫더니 오류가 계속 발생했다.
- 그래서 범위를 ..< 식으로 수정해주었더니 작동이 잘되었다.
- 중복처리를 할때 contains를 처음 써봐서 == false를 안써줘서 계속 빈배열이 나왔다... ㅠㅠ
- sort도 처음써봐서 sorted()는 오름차순인것을 알게 되었다.
####추가 풀이
중복된 값을 허용하지 않는 Set을 이용하여 좀더 간단하게 풀어보았습니다
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
let set = Set<Int>()
for i in 0..<numbers.count {
for q in i+1..<numbers.count {
set.insert(numbers[i] + numbers[q])
}
}
return set.sorted()
}