아주 친절하게 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
}
'Algorithm' 카테고리의 다른 글
프로그래머스 - 3진법 뒤집기 [Swift] (0) | 2021.06.27 |
---|---|
프로그래머스 - 실패율 [Swift] (1) | 2021.06.27 |
프로그래머스 키패드 누르기 [Swift] (0) | 2021.06.26 |
프로그래머스 구명보트 [C++] (0) | 2021.06.17 |
프로그래머스 - 124 나라의 숫자 [C++] (0) | 2021.06.10 |
최근댓글