본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열 다루기 기본

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

func solution(_ s:String) -> Bool {
    if (s.count != 4) && (s.count != 6) { 
        return false 
    }
    return s.allSatisfy({ $0.isNumber })
}

 

- if (s.count != 4) && (s.count != 6) { return false }

    문자열 s의 길이가 4 또는 6이 아니라면 false 반환

    이유: 길이가 4 또는 6이 아니라면 숫자로만 이루어진 문자열일 수 없기 때문

- return s.allSatisfy({ $0.isNumber }): allSatisfy 

    문자열 s의 모든 문자가 숫자인지 확인

- $0.isNumber

    클로저는 주어진 문자가 숫자인지 판별

    모든 문자가 숫자라면 true를 반환하고, 그렇지 않다면 false를 반환

 

 

또 다른 풀이

func solution(_ s: String) -> Bool {
    let regex = #"^\d{4}$|^\d{6}$"#
    return s.range(of: regex, options: .regularExpression) != nil
}

 

- ^\d{4}$|^\d{6}$(정규표현식)

    문자열이 4자리 또는 6자리의 숫자로만 이루어져 있는지 검사

- range(of:options:)

    메서드를 사용하여 정규표현식과 문자열을 비교하고, 일치하는 부분이 있으면 옵셔널 값을 반환

    true: 반환된 값이 nil이 아닐 경우, 일치하는 부분이 존재한다면 문자열의 길이 4 또는 6, 숫자로만 이루어져 있다는 것을 의미

    false: 일치하는 부분이 없다면 nil 반환, 문자열이 주어진 조건을 만족하지 않는다는 것을 의미 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31