출처:프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/86051
난이도:Lv.1

 

문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. 
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 <= numbers 의 길이 <=9
    • 0 <= numbers의 모든 원소 <= 9
    • numbers의 모든 원소는 서로 다릅니다.

입출력 예

numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6

 


import Foundation

func solution(_ numbers:[Int]) -> Int {
    //음.... 어떤 방법이 있을까? 고민하다가 집합에 대해 깨달아버렸다..
    //집합을 이용해서 한 번 풀어볼까?
    
    //1.numbers를 집합으로 지정 (set)
    //2.새로운 집합 num[0...9]을 생성
    //3.num과 numbers의 대칭차(gap)를 구한다
    //4.gap배열의 합(reduce)을 실행
    
let set = Set(numbers)
let num: Set = [1,2,3,4,5,6,7,8,9,0]
    
let gap = set.symmetricDifference(num)

let sum = gap.reduce(0) { (result, next) in
    return result + next
}
    return sum
}​