출처:프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12918
난이도:Lv.1

 

문제 설명

문자열 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 {
    // s의 길이가 4 또는 6인지 확인
    if s.count != 4 && s.count != 6 {
        return false
    }
    
    // 문자열을 내림차순으로 정렬
    let arr = String(s.sorted(by: >))
    
    // 정렬된 문자열의 첫 번째 문자가 숫자인지 확인
    if arr.first! >= "0" && arr.first! <= "9" {
        // 모든 문자가 숫자인지 확인
        for char in s {
            if char < "0" || char > "9" {
                return false
            }
        }
        return true
    } else {
        return false
    }
}

 

ASCII코드 값을 고려했을 때 문자열이 더 크니까, 내림차순 정렬로 맨 앞으로 문자를 보내 0 ~ 9가 아닐경우 false해 줌