아리의 iOS 탐구생활

[Swift/프로그래머스] 신규 아이디 추천 본문

Swift/알고리즘

[Swift/프로그래머스] 신규 아이디 추천

Ari Lee 2021. 9. 16. 18:13
반응형
 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

 

문제가 아주  친절하다. 1단계부터 7단계까지 순서가 나열되어 있는데, 단계별로 차근차근 구현해보는 문제이다.

Swift의 문자열을 잘 다루는 편이라면 그다지 어렵진 않은 문제다.

한꺼번에 많은 것을 하려고 하지말고 단계별로 구현해보는 것을 추천한다.

 

힌트

String 관련 메소드를 활용하면 쉽게 풀수 있다. 

 

 

더보기
func solution(_ new_id:String) -> String {
    var newID = ""
    
    // 1단계: 소문자로 치환하기
    let lowercase = new_id.lowercased()
    
    // 2단계 소문자, 숫자, 특수문자(-, _, .)를 제외한 모든 문자 제거
    for c in lowercase {
        if c.isLowercase || c.isNumber || "-" == c || "_" == c || "." == c {
            newID += String(c)
        }
    }
    
    // 3단계: 마침표 2개이상 반복되는 경우 1개로 치환하기
    while newID.contains("..") {
        newID = newID.replacingOccurrences(of: "..", with: ".")
    }
    
    // 4단계: 마침표가 처음이나 끝에 위치한다면 제거하기
    newID = newID.trimmingCharacters(in: ["."])
    
    // 5단계: 빈문자열이라면 "a" 대입하기
    if newID.count == 0 {
        newID = "a"
    }
    
    // 6단계: 16자 이상이라면 15자 제외하고 모두 제거, 마침표가 끝에 위치하면 그것또한 제거
    if newID.count > 15 {
        newID = String(newID.prefix(15))
        if newID.last == "." {
            newID = String(newID.dropLast())
        }
    }
    
    // 7단계: 아이디 길이가 2자 이하라면 마지막 문자를 3이 될때까지 반복하여 붙힌다.
    if newID.count <= 2 {
        while newID.count < 3 {
            newID += String(newID.last!)
        }
    }
    
    return newID
}

 

반응형
Comments