728x90
문제 설명
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array의 원소 ≤ 1,000
0 ≤ n ≤ 1,000
예시
첫 풀이
func solution(_ array:[Int], _ n:Int) -> Int {
var result = 0
// 배열 길이 제한, 정수 n 크기 제한
guard array.count >= 1, array.count <= 100, n >= 0, n <= 1000 else { return -1 }
// 배열 요소 크기 제한 0 <= 배열 요소 <= 1000
if !array.contains(where: { $0 > 1000 || $0 < 0 }) {
for i in 0..<array.count {
if array[i] == n {
result += 1
}
}
}
return result
}
guard를 사용하여 배열 길이, 요소를 제한 하였는데 return 0을 하는 것이 오히려 답을 틀리게 나왔다.
나머지 사람들이 푸는 것을 보니 제한사항으로 굳이 guard 처리를 할 필요가 없었다.
그리고 filter를 사용하는 것을 보았는데,, 정말 간단하게 코드를 작성하여서 filter에 대해 찾아봤다.
두 번째 풀이
func solution(_ array:[Int], _ n:Int) -> Int {
array.filter { $0 == n }.count
}
Filter
스위프트 표준 라이브러리의 대표적인 고차함수라고한다.
컨테이너 내부의 값을 걸러서 추출하는 역할을 한다고 한다.
특정 조건에 맞게 걸러내는 역할을 하고 이 함수의 매개변수를 전달하는 함수의 반환 타입은 Bool이라고 한다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers/Swift] Lv.0 머쓱이보다 키 큰 사람 (0) | 2024.03.13 |
---|---|
[Programmers/Swift] Lv.0 배열 원소의 길이 (0) | 2024.03.13 |
[프로그래머스] 문자열 반복 출력 (0) | 2023.03.28 |
[프로그래머스] 옷가게 할인 받기 (0) | 2023.03.17 |
[프로그래머스] 최빈값 구하기 (0) | 2023.03.08 |