[TIL][프로그래머스/Swift] 문자열 다루기 기본

Eden·2일 전
2

TIL

목록 보기
39/41
post-thumbnail

문제 설명

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

제한 사항

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

입출력 예

sreturn
a234false
1234true

최종 코드

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

접근 방법

  1. 문자열의 길이 검사
  • 문자열의 길이가 4 또는 6인지 확인하는 조건을 먼저 설정했다. 이때 s.count == 4 || s.count == 6와 같은 논리식을 사용하여 조건을 명확히 설정할 수 있다.
  1. 모든 문자가 숫자인지 확인
  • Swift에서 문자열 내부가 숫자로 이루어져있는지 확인하는 방법을 검색해 allSatisfy() 메서드를 발견했다. allSatisfy()를 사용해 문자열의 모든 문자가 숫자인지 검사했다. $0.isNumber는 각 문자가 숫자인지 확인하는 데 사용되며, s.allSatisfy({ $0.isNumber })는 문자열의 모든 문자가 숫자인지를 반환한다.
  1. 최종 조건 반환
  • 문자열의 길이 조건과 숫자 여부 조건을 만족하는 경우 true를 반환하고, 그렇지 않으면 false를 반환하도록 했다.
  • 조건식을 하나로 합쳐 (s.count == 4 || s.count == 6) && s.allSatisfy({ $0.isNumber })를 사용하여 간결하게 구현했다.

느낀 점

  • 조건을 검사할 때 불필요하게 여러 번의 중첩된 if문을 사용하는 것보다, 조건을 한 번에 묶어 처리하는 것이 코드의 가독성과 효율성을 높인다는 것을 배웠다. 그리고 자바스크립트랑은 다르게 == 이후만 묶는게 안된다.
  • allSatisfy() 메서드의 활용법을 익혔고, 이를 통해 문자열의 모든 요소에 대해 조건을 간단하게 검사할 수 있었다. Swift의 다양한 고차 함수와 메서드를 더 적극적으로 활용하는 것이 중요하다는 점을 느꼈다.
profile
Just living the daydream, one moment at a time.
post-custom-banner

0개의 댓글