https://programmers.co.kr/learn/courses/30/lessons/72410
[문제]
신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, "네오"가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.
[제한사항]
new_id는 길이 1 이상 1,000 이하인 문자열입니다.
new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
new_id에 나타날 수 있는 특수문자는 -_.~!@#$%^&*()=+[{]}:?,<>/ 로 한정됩니다.
//
// main.swift
// Programmers_신규아이디추천
//
// Created by 임지성 on 2021/09/24.
//
import Foundation
func solution(_ new_id:String) -> String {
// 1단계
var my_id = new_id.lowercased()
// 2단계
var newID: String = ""
for i in my_id {
if i.isNumber || i.isLetter || i == "." || i == "-" || i == "_" {
newID.append(i)
}
}
// 3단계
while newID.contains("..") {
newID = newID.replacingOccurrences(of: "..", with: ".")
}
// 4단계
while newID.hasPrefix(".") {
newID.removeFirst()
}
while newID.hasSuffix(".") {
newID.removeLast()
}
// 5단계
if newID == "" {
newID.append("a")
}
// 6단계
if newID.count >= 16 {
newID.removeSubrange(newID.index(newID.startIndex, offsetBy: 15)..<newID.endIndex)
}
if newID.hasSuffix(".") {
newID.removeLast()
}
// 7단계
while newID.count <= 2 {
newID += String(newID.last!)
}
return newID
}
//print(solution("...!@BaT#*..y.abcdefghijklm"))
- newID.replacingOccurrences(of: "..", with: ".") : ".."을 "."으로 변환
- str.first / str.last : 첫번째 문자 / 마지막 문자
- isLetter, isNumber
- String 특정 index : str.index(str.startIndex, offsetBy: 숫자)
- hasPrefix(".") : 앞 글자가 "."
- hasSuffix(".") : 뒷 글자가 "."
'Algorithm' 카테고리의 다른 글
[Programmers] 체육복 (0) | 2021.09.28 |
---|---|
[Programmers] K번째 수 (0) | 2021.09.25 |
[Programmers] 로또의 최고순위와 최저 순위 (0) | 2021.09.24 |
[Programmers] 두 개 뽑아서 더하기 (0) | 2021.09.14 |
[Programmers] 카카오 크레인 인형 뽑기 게임 (0) | 2021.09.12 |
댓글