반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/72410?language=swift
풀이
import Foundation
func solution(_ new_id:String) -> String {
var myID: String = new_id
myID = myID.lowercased()
var newID: String = ""
for i in myID {
if i.isLetter || i.isNumber || i == "-" || i == "_" || i == "." {
newID.append(i)
}
}
while newID.contains("..") {
newID = newID.replacingOccurrences(of: "..", with: ".")
}
while newID.hasPrefix(".") {
newID.removeFirst()
}
while newID.hasSuffix(".") {
newID.removeLast()
}
if newID == "" {
newID = "a"
}
if newID.count >= 16 {
let index = newID.index(newID.startIndex, offsetBy: 15)
newID = String(newID[newID.startIndex..<index])
if newID.hasSuffix(".") {
newID.removeLast()
}
}
if newID.count <= 2 {
while newID.count != 3 {
newID = newID + String(newID.last!)
}
}
return newID
}
isLetter
,isNumber
: Char의 문자, 숫자여부 확인가능 (반환값 Bool)replacingOccurrences
:of
부분을with
으로 변경 (반환값 String)newID.index
: String의 index를 반환한다.- 파이썬으로 풀었을 때는 막힘없이 금방 풀었는데, Swift로 해결하려니 문법을 몰라서 오래걸렸다...
- 일단 문자열처리하는 방법에 익숙해질 필요가 있겠다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 다트 게임 (프로그래머스 lv1, 스위프트) (0) | 2022.02.05 |
---|---|
[알고리즘 연습] 시저 암호 (프로그래머스 lv1, 스위프트) (0) | 2022.02.02 |
[알고리즘 연습] 소수 만들기 (프로그래머스 lv1, 파이썬) (2) | 2021.12.30 |
[알고리즘 연습] 길찾기 게임 (프로그래머스 lv3, 파이썬) (0) | 2021.07.12 |
[알고리즘 연습] 섬 연결하기 (프로그래머스 lv3, 파이썬) (0) | 2021.07.10 |