Programming/Algorithm & Data Structure

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

guswlsdk 2022. 7. 4. 11:35
반응형

 

 

 

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

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

programmers.co.kr

 

 

swift는 파이썬처럼 문자열을 다루기 쉽지가 않다. 어느 정도 익숙해졌긴 하지만 이번엔 문자열 검사에 대한 문제이기 때문에 헷갈렸다. 

정규표현식에 대해 공부를 할 필요가 있어보인다....

 

문제 풀이는 문제에 제시된 조건을 그대로 따라하기만 하면 되는데 이를 어떻게 swift로 처리하느냐의 문제인 것 같다.

 

아래는 정답처리된 내가 작성한 코드이다.

 

import Foundation

func solution(_ new_id:String) -> String {
    var addDotFlag = true
    var newId = [String]()

    for i in new_id.lowercased().map({String($0)}){
        if ["-","_"].contains(i){
            newId.append(i)
            addDotFlag = true
        }else if i == "." && addDotFlag == true{
            newId.append(i)
            addDotFlag = false
        }else if Int(i) != nil{
            newId.append(i)
            addDotFlag = true
        }else if i.range(of: "[a-z]", options: .regularExpression) != nil{
            newId.append(i)
            addDotFlag = true
        }
    }
    
    while newId.first == "."{
        newId.removeFirst()
    }
    while newId.last == "."{
        newId.removeLast()
    }
    if newId.isEmpty{
        newId.append("a")
    }
    if newId.count > 15{
        newId = Array(newId[0...14])
        while newId.last == "."{
            newId.removeLast()
        }
    }
    if newId.count <= 2{
        while newId.count != 3{
            newId.append(newId.last!)
        }
    }
    return newId.joined()
}

 

 

반응형