기초라고 생각되는 것/문제풀이
[Swift] 프로그래머스 - 배열 만들기 2 / LV.0, 181921
아렉스_Arex
2023. 11. 21. 12:22
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
l 이상 r 이하 -> 범위
"0"과 "5" -> 필터링
func solution(_ l:Int, _ r:Int) -> [Int] {
var result: [Int] = []
var count = 0
for i in (l...r) {
count = 0
if i % 5 != 0 { continue }
let charI = String(i)
for c in charI {
if !(c == "5" || c == "0") { count = 0; continue }
count += 1
}
if charI.count == count {
result.append(i)
}
}
return result.isEmpty ? [-1] : result
}
고차함수 이용
func solution2(_ l:Int, _ r:Int) -> [Int] {
let result = (l...r)
.filter({ $0 % 5 == 0 })
.filter({ String($0).allSatisfy({$0 == "5" || $0 == "0" }) })
return result.isEmpty ? [-1] : result
}
allSatisfy를 사용하면서 주의해야할 점은 Sequence가 비어있는 경우에도 true를 반환한다.
참고
https://developer.apple.com/documentation/swift/string/allsatisfy(_:)
allSatisfy(_:) | Apple Developer Documentation
Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.
developer.apple.com