iOS/Programmers

[Swift] lv.1 문자열 다루기 기본 | Programmers

sngsp 2024. 3. 15. 09:24

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

제한 사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

1차 고민

당연히 내 머릿속엔 if와 else로 구성된 코드였다.
오늘은 어제 풀이에서 아쉽다고 생각했던 삼항 연산자를 사용해볼까 싶은 생각이 들었다.

그런데 count를 통해서 4나 6일 경우 통과시키는 방법은 알겠는데 && 뒤에 뭐라고 붙일지 감이 안왔다.
벗겨내야하는건가? 하는 생각이 들어서 guard let isNumber 이런 것도 해보았는데
플레이그라운드가 내 마음을 알고 Int형으로 변환했을 때 nil이 아닐 경우를 넣으면 된다고 친절하게 fix해주더라...
맞는 말이다. Int를 씌웠을 때 문자가 들어있다면 nil이 나올거니까...

1차 코드

func solution(_ s:String) -> Bool {
    return (s.count == 4 || s.count == 6) && Int(s) != nil ? true : false
}

1차 결과

원래 생각했던 코드

func solution(_ s:String) -> Bool {
    if s.count == 4 || s.count == 6 {
        if Int(s) == nil {
            return false
        }
        else {
            return true
        }
    }

    else {
        return false
    }
}

그렇다. 오늘은 삼항연산자로 짧고 굵게 한 줄로 코드를 냈다. 뿌듯하다.