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()
}
'IOS > Swift Algorithm Level 1' 카테고리의 다른 글
Swift. 가운데 문자열 (0) | 2020.10.08 |
---|---|
Swift. 2016년 (0) | 2020.10.07 |
Swift. 체육복 (0) | 2020.10.06 |
Swift. K번째 수 (0) | 2020.10.05 |
Swift. 크레인 인형뽑기 게임 (0) | 2020.10.04 |