filter는 익숙한 문법입니다. '걸러내다' 라는 의미를 갖고 있으며 조건에 맞는 원하는 값을 걸러내는데 사용되며 아래처럼 사용됩니다.
func solution(_ array:[Int], _ n:Int) -> Int {
return array.filter { $0 == n }.count
}
reduce로 숫자 더하기
let numbers = [1, 2, 3, 4, 5]
이 배열의 모든 숫자를 더하고 싶다면 `reduce`를 이렇게 사용할 수 있습니다.
let sum = numbers.reduce(0) { (결과, 숫자) in
return 결과 + 숫자
}
- 0은 초기값 입니다.
- `{ (결과, 숫자) in 결과 + 숫자 }`는 각 숫자를 어떻게 더할지를 설명하는 규칙 입니다.
[1, 2, 3, 4, 5] 배열에서는 다음과 같이 동작합니다.
- 처음에는 0 (초기값) + 1 = 1
- 그 다음에는 1 + 2 = 3
- 그 다음에는 3 + 3 = 6
- 이런 식으로 계속 더해져서 마지막에 15 가 됩니다.
위에서 reduce 원리를 알았으니 이제 아래 코드를 살펴보면 다음과 같이 동작하는 것을 알 수 있습니다.
- 1. $0 = 0, $1 = 1 일 때 $1 이 1이므로 0을 1 증가 시켜줍니다.
- 2. 1에서 $0이 1 증가되었으므로 $0 = 1, $1 = 1 이므로 1을 증가 시켜줍니다.
- 3. 2에서 $0이 1 증가되었으므로 $0 = 2, $1 = 2 이므로 그대로 유지합니다.
- 5. 3에서 $0이 1 증가되지 않았으므로 $0 = 2, $1 = 2 이므로 그대로 유지합니다.
- 5. 4에서 $0이 1 증가되지 않았으므로 $0 = 2, $1 = 2 이므로 그대로 유지합니다.
func solution(_ array: [Int], _ n: Int) -> Int {
return array.reduce(0) { $1 == n ? $0 + 1 : $0 }
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 가장 많이 받은 선물 (0) | 2024.09.05 |
---|---|
프로그래머스 - 치킨 쿠폰 (0) | 2024.09.02 |
프로그래머스 - 배열 만들기 3, flatMap (0) | 2024.08.30 |
프로그래머스 - x 사이의 개수 (0) | 2024.08.30 |
프로그래머스 - 문자열 잘라서 정렬하기 (0) | 2024.08.29 |