티스토리 뷰

코딩테스트

Lv.0 swift 모음 제거

알롱도담쓰 2024. 3. 18. 22:05

문제 설명

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한 조건

my_string은 소문자와 공백으로 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 1,000

 

내 답안

func solution(_ my_string:String) -> String {
    let array = ["a", "e", "i", "o", "u"]
    
    return my_string.filter { !array.contains(String($0)) }
}

 

접근 방법

  1. 필터를 써서 포함되지 않았을 경우에만 반환되도록 했다

 

다른 풀이

import Foundation

func solution(_ my_string:String) -> String {
    return my_string.filter { !["a", "e", "i", "o", "u"].contains($0)}
}

 

새로운 배열 변수를 만들지 않고도 할 수 있는 방법

 

import Foundation

func solution(_ my_string:String) -> String {
    return my_string.components(separatedBy: ["a", "e", "i", "o", "u"]).joined()
}

 

이 함수는 나눈다는 생각만 했었는데 결과적으로 따지면 나누려고 하는 구분자를 삭제하는 것과 같구나

 

import Foundation

func solution(_ my_string:String) -> String {
    return my_string.replacingOccurrences(of: "a", with: "")
    .replacingOccurrences(of: "e", with: "")
    .replacingOccurrences(of: "i", with: "")
    .replacingOccurrences(of: "o", with: "")
    .replacingOccurrences(of: "u", with: "")
}
import Foundation

func solution(_ my_string:String) -> String {
    return my_string.replacingOccurrences(of: "[aeiou]", with: "", options: .regularExpression)
}

 

같은 replacingOccurrences 메서드를 사용했는데 다른 방식으로 풀어낸 것이 신기했다

 

 

알게 된 것

'코딩테스트' 카테고리의 다른 글

Lv.0 swift 문자열 앞의 n글자  (1) 2024.03.19
Lv.0 swift 제곱수 판별하기  (0) 2024.03.18
Lv.0 Swift 문자 반복 출력하기  (0) 2024.03.18
Lv.0 swift 자릿수 더하기  (0) 2024.03.18
Lv.0 Swift 점의 위치 구하기  (0) 2024.03.18
최근에 올라온 글