이런 코드를 만들 수도 있다는 것을 알 수 있었습니다.
description 의 allSatisfy 를 사용한다면 String에서 각각의 Character 를 비교하여 모든 조건을 만족하는 값을 추출해낼 수 있습니다.
func solution(_ l:Int, _ r:Int) -> [Int] {
return (l...r).filter { $0.description.allSatisfy { $0 == "0" || $0 == "5" } } == [] ? [-1] : (l...r).filter { $0.description.allSatisfy { $0 == "0" || $0 == "5" } }
}
성능은 이것이 더 뛰어나다는 것 또한 확인하였습니다.
func solution(_ l:Int, _ r:Int) -> [Int] {
var arr: [Int] = []
for i in l...r {
if !String(i).contains(where: { ($0 != "5") && ($0 != "0")}){
arr.append(i)
}
}
return arr.isEmpty ? [-1] : arr
}
5, 5555555 를 입력하였을 때 기준으로 첫 번째 코드는 대략 5.0초, 두 번째 코드는 대략 2.5초 정도 였습니다.
성능 확인하는 법은 아래와 같습니다.
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 배열의 유사도. feat. Set의 공집합 (intersection) (0) | 2024.08.29 |
---|---|
프로그래머스 - 문자열 겹쳐쓰기 (2) | 2024.08.28 |
프로그래머스 - 정사각형으로 만들기 (0) | 2024.08.26 |
프로그래머스 - 배열 만들기 1 (0) | 2024.08.25 |
프로그래머스 - 부분 문자열 (0) | 2024.08.23 |