본문 바로가기

Algorithm의 모든것

[Algorithm의 모든것] 프로그래머스-문자열 다루기 기본

문제

 

 

더보기

내 풀이
func solution(_ s:String) -> Bool {
    if s.count == 4 || s.count == 6 {
        return s == s.filter{ $0.isNumber } ? true : false
    }
    return false
}

 

다른 사람의 풀이
func solution(_ s:String) -> Bool {
    return (Int(s) != nil && (s.count == 4 || s.count == 6)) ? true : false
}

 

느낀점

저는 배열의 filter 함수를 써서 숫자를 구별해내어 숫자면 true, 숫자가 아니면 false를 출력하는 식의 코드를 만들었습니다.
근데 많은 사람들의 풀이를 보니 s값(String)을 Int로 형변환하여 nil이 아닌 경우를 분기 처리하더라고요...

궁금해서 직접 실험을 해보니... String to Int를 할 때에 String이 숫자가 아닌 문자가 들어있는 경우에는 형변환이 안되고 nil을 return 시켜버립니다.
그래서 사람들이 nil이 아닌 경우(s가 모두 숫자로 이루어진 문자열인 경우)를 분기 처리한 것입니다!!

정말 정말 간단한 알고리즘 풀이를 처음 포스팅해봤습니다 :)
앞으로는 더 더 알찬 방법으로 리뷰를 해보도록 하겠습니다 ~!