문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s return a234 false 1234 true
func solution(_ s: String) -> Bool {
if (s.count == 4 || s.count == 6) && s.allSatisfy({ $0.isNumber }) {
return true
} else {
return false
}
}
s.count == 4 || s.count == 6
와 같은 논리식을 사용하여 조건을 명확히 설정할 수 있다.allSatisfy()
메서드를 발견했다. allSatisfy()
를 사용해 문자열의 모든 문자가 숫자인지 검사했다. $0.isNumber
는 각 문자가 숫자인지 확인하는 데 사용되며, s.allSatisfy({ $0.isNumber })
는 문자열의 모든 문자가 숫자인지를 반환한다.true
를 반환하고, 그렇지 않으면 false
를 반환하도록 했다.(s.count == 4 || s.count == 6) && s.allSatisfy({ $0.isNumber })
를 사용하여 간결하게 구현했다.if
문을 사용하는 것보다, 조건을 한 번에 묶어 처리하는 것이 코드의 가독성과 효율성을 높인다는 것을 배웠다. 그리고 자바스크립트랑은 다르게 == 이후만 묶는게 안된다.allSatisfy()
메서드의 활용법을 익혔고, 이를 통해 문자열의 모든 요소에 대해 조건을 간단하게 검사할 수 있었다. Swift의 다양한 고차 함수와 메서드를 더 적극적으로 활용하는 것이 중요하다는 점을 느꼈다.