IOS/Swift Algorithm Level 1

Swift. 두개 뽑아서 더하기

1. 문제

2. 문제풀이에 필요한 조건

  1. 한배열에 담긴 숫자를 모든 경우의 덧샘에 중복없이 정렬해서 출력하는 문제였다
  2. 가장 처음 부딪힌것은 반복문에서 배열의 범위를 정하는 것.
  3. 두번째는 어떻게 i의 시작점보다 뒤로 갈것인지.
  4. 그리고 중복은 어떻게 처리할 것인지.
  5. 마지막에는 정렬까지.

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()
}
  1. 문제를 풀면서 배열의 범위를 numbers.count-1로 해서 줫는데 문제가 하나 생겼다. 반복문을 실행할때에 처음에는 저렇게 해도 상관이 없었지만 두번의 반복문에 동일하게 numbers.count-1로 줫더니 오류가 계속 발생했다. 
  2. 그래서 범위를 ..< 식으로 수정해주었더니 작동이 잘되었다. 
  3. 중복처리를 할때 contains를 처음 써봐서 == false를 안써줘서 계속 빈배열이 나왔다... ㅠㅠ 
  4. 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