Algorithm
프로그래머스 신규 아이디 추천 [swift]
최강훈
2021. 6. 26. 16:37
아주 친절하게 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
}