내 풀이
import Foundation
func solution(_ numbers:[Int]) -> Int {
let result = 45 - numbers.reduce(0) { $0 + $1 }
return result
}
먼저 배열 numbers의 합을 구하기 위해 위해 reduce 함수를 사용하여 배열의 모든 요소를 합쳐 하나의 값으로 만든다. 초기값은 0이며, 클로저를 통해 배열의 각 요소를 더한다. 그 후, 배열 numbers에 포함되지 않은 숫자들의 합을 구하기 위해 0부터 9까지의 숫자의 총 합인 45에서 이전에 구한 배열의 합을 빼준다. 이렇게 하면 배열에 포함되지 않은 숫자들의 합을 알 수 있다.
코드의 동작을 정리해보면,
- solution 함수는 정수 배열 numbers를 매개변수로 받음
- 배열 numbers의 모든 요소를 합산하기 위해 reduce 함수를 사용
reduce 함수는 배열의 각 요소에 대해 제공된 클로저를 적용하여 값을 줄여나가는 과정을 수행
- 초기값으로 0을 설정하고, 클로저 { $0 + $1 }를 사용하여 배열의 각 요소 더하기
- 배열 numbers의 모든 요소를 더한 합을 구한 후, 이 값을 45에서 빼기
45는 0부터 9까지의 숫자의 총 합
- 결과 반환
reduce란?
- 컬렉션(배열, 딕셔너리 등)의 각 요소에 대해 클로저를 실행하여 단일 값을 생성하는 고차 함수
- 초기값과 클로저를 인자로 받음
예시
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 } // 초기값 0부터 시작하여 각 요소를 더함
print(sum) // 출력: 15
고차함수란?
고차 함수의 사용할 경우 코드를 더 간결하고 읽기 쉽게 만들어줌
함수형 프로그래밍의 핵심 개념 중 하나
두 가지 조건 중 적어도 하나를 만족하는 함수
- 다른 함수를 인자로 받는 함수
- 함수를 결과로 반환하는 함수
즉, 고차 함수는 함수를 값으로 다루며, 다른 함수들을 조작하거나 생성하는 함수
고차 함수의 예
map, filter, reduce
위 고차함수들은 다른 함수(클로저)를 인자로 받아 컬렉션의 요소를 변환, 필터링, 축소하는 기능을 제공
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 가운데 글자 가져오기 (1) | 2024.02.14 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 제일 작은 수 제거하기 (0) | 2024.02.13 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 핸드폰 번호 가리기 (0) | 2024.02.11 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 음양 더하기 (0) | 2024.02.09 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 나누어 떨어지는 숫자 배열 (0) | 2024.02.08 |