아주 친절하게 7개의 단계로 나누어 놓으셨다.

나는 아래와 같은 STL 제공 메서드를 이용해 풀었다:

  • lowerCased(): 대문자->소문자로 바꾼 문자열 반환
  • .append(char c): 문자열에 문자 더함
  • replacingOccrences(of:with:): of: 문자열을 with: 문자열로 모두 치환
  • removeFirst(), removeLast(): 문자열의 첫(마지막) 문자를 제거
  • hasSuffix(""), hasPrefix(""): 문자열이 특정 문자로 시작하는지/끝나는지 구분
  • contains(""): 특정 문자열이 문자열 내부에 포함됐는지 확인

 

 

import Foundation

func solution(_ new_id:String) -> String {
    
    var answer: String = ""
    var temp: String = ""
    
    //step1
    temp = new_id.lowercased()
    
    //step2
    for c in temp {
        if (c.isLetter || c.isNumber || c == "-" || c == "_" || c == ".") {
            answer.append(c)
        }     
    }
    
    // step3
    while answer.contains("..") {
        answer = answer.replacingOccurrences(of: "..", with: ".")
    }
    
    // step4
    while answer.hasPrefix(".") {
        answer.removeFirst()
    }
    while answer.hasSuffix(".") {
        answer.removeLast()
    }
    
    // step5
    if answer == "" {
        answer = "a"
    }
    
    //step6
    if answer.count >= 16 {
        let index = answer.index(answer.startIndex, offsetBy: 15)
        answer = String(answer[answer.startIndex..<index])
        while answer.hasSuffix(".") {
            answer.removeLast()
        }
    }
    
    //step7
    while answer.count <= 2 {
        answer.append(answer.last!)
    }
  
    
    return answer
}

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom