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()
}
반응형