[Swift] 프로그래머스(Lv1) - 신규 아이디 추천 [2021 KAKAO BLIND RECRUITMENT]

Kerri·2021년 5월 21일
0

코테

목록 보기
49/67

안녕하세요 !

https://programmers.co.kr/learn/courses/30/lessons/72410

import Foundation

func solution(_ new_id:String) -> String {
    // 1단계
    var str = new_id.lowercased()
    
    // 2단계
    var chars = CharacterSet.lowercaseLetters
    chars.formUnion(CharacterSet.decimalDigits)
    chars.insert(charactersIn: "-_.")
    
    let notAllowed = chars.inverted
    str = str.components(separatedBy: notAllowed).joined()
    
    // 3단계
    while str.contains("..") {
        str = str.replacingOccurrences(of: "..", with: ".")
    }
    
    // 4단계
    str = str.trimmingCharacters(in: ["."])
    
    // 5단계
    if str.count == 0 {
        str = "a"
    }
    
    // 6단계
    if str.count >= 16 {
        let start = str.startIndex
        let end = str.index(str.startIndex, offsetBy: 15)
        let range = start..<end
        str = String(str[range])
        str = str.trimmingCharacters(in: ["."])
    }
    
    // 7단계
    if str.count <= 2 {
        let endIndex = str.index(before: str.endIndex)
        let add = String(str[endIndex])
        while str.count != 3 {
            str += add
        }
    }
    
    return str
}

이 문제는 ... 7단계를 그대로 구현하면 되는 문제라 어렵지 않은 문제지만..
Swift로 풀려고하다보니 상당히... 신경써야 되는 부분이 많았습니다 ! 😅

저는 Swift의 CharacterSet을 이용하여 허용되는 문자(알파벳 소문자, 숫자 , "-_.") chart set인 chars를 만든 다음 inverted로 허용되지 않은 문자 셋(notAllowed)을 만들어 걸러주었습니다.

str.components(separatedBy: oks).joined()

그 다음 trimmingCharacters으로 앞뒤 "."를 제거해주었습니다. trimmingCharacters은 양끝 문자를 제거해주는 메소드 입니다.

profile
안녕하세요 !

0개의 댓글