문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
https://programmers.co.kr/learn/courses/30/lessons/86051
나의 문제 풀이
import Foundation
func solution(_ numbers:[Int]) -> Int {
let numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let numbers2 = numbers1.filter { !numbers.contains($0) }
let answer = numbers2.reduce(0) { $0 + $1 }
return answer
}
// filter{}
// 값을 추출하는 고차 함수
// contains()
// 두 어레이의 값을 비교할 수 있는 함수
// reduce()
// 컨테이너의 내부의 요소들을 하나로 합치는 기능을 하는 고차 함수
다른 사람의 풀이
import Foundation
func solution(_ numbers: [Int]) -> Int {
return (0...9).filter { !numbers.contains($0) }.reduce(0, +)
}
-
import Foundation
func solution(_ numbers:[Int]) -> Int {
return 45-numbers.reduce(0, +)
}
소감
비교적 어렵지 않게 풀 수 있었다.
함수들 사용이 아직 익숙하지 않아서 문법 검색을 통해 해결했다.
다른 사람의 코드를 보면서 저런 식으로도 최적화할 수 있구나 배우게 되었고,
reduce(0, +) 코드를 배울 수 있었다.
45에서 숫자의 합을 빼는 것을 보고 나도 접근을 다양하게 하면 좋겠다는 생각을 해본다!
참고:
https://woongsios.tistory.com/35
https://minosaekki.tistory.com/21
'Coding Test' 카테고리의 다른 글
Programmers.K번째수 (Swift) (0) | 2022.03.29 |
---|---|
Progammers.음양 더하기 (Swift) (0) | 2022.03.29 |
Progammers.로또의 최고 순위와 최저 순위 (Swift) (0) | 2022.03.28 |
Programmers.숫자 문자열과 영단어 (Swift) (0) | 2022.03.28 |
Programmers.신규 아이디 추천 (Swift) (0) | 2022.03.28 |
댓글