티스토리 뷰

2021 카카오 블라인드 채용 LV1

그냥 문제의 순서대로 메서드를 작성해서 풀었다

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

 

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

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

programmers.co.kr

 

import Foundation

func solution2(_ new_id:String) -> String {
    var id = new_id
    id = step1(id)
    id = step2(id)
    id = step3(id)
    id = step4(id)
    id = step5(id)
    id = step6(id)
    id = step4(id)                                                    // 앞 뒤 . 제거하는 함수 다시한번 호출
    id = step7(id)
    
    return id
}

func step1(_ id: String) -> String {
    return id.lowercased()                                            // 소문자로 치환
}

func step2(_ id: String) -> String {
    let rule = ["-", "_", "."]                                        // 사용가능한 문자
    let newId = id.filter { c in
        c.isLetter || c.isNumber || rule.contains(String(c))          // 다음의 조건만을 만족하는 아이디를 사용가능
    }

    return newId
}

func step3(_ id: String) -> String {
    var newID = id
    while newID.contains("..") {                                      // .. 이 없을때까지 반복문을 돈다
        newID = newID.replacingOccurrences(of: "..", with: ".")      // .. 을 . 으로 교체
   

    return newID
}

func step4(_ id: String) -> String {
    var newId = id
    newId = newId.trimmingCharacters(in: ["."])                      // 양 끝에 있는 .을 제거
    
    return newId
}

func step5(_ id: String) -> String {
    if id == "" {                                                    // 빈 문자열이면
        return "a"                                                  // a
    } else {
        return id
    }
}

func step6(_ id: String) -> String {
    var newId = id
    while newId.count >= 16 {                                         // 길이가 15보다 클경우
        newId.removeLast()                                            // 마지막 글자를 제거
    }
    
    //(newId.prefix(15).description) = String()
    return newId
}

func step7(_ id: String) -> String {
    var newId = id
    while newId.count < 3 {                                            // 길이가 3보다 작은경우
        newId.append(newId.last!)                                     // 마지막 글자를 append
    }
    
    return newId
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함