기초라고 생각되는 것/문제풀이

[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