๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[Swift] 2021 KAKAO BLIND RECRUITMENT ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

by Fomagran ๐Ÿ’ป 2021. 3. 7.
728x90
๋ฐ˜์‘ํ˜•

 

Solution

 


Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ

programmers.co.kr


Source Code

 

import Foundation
func solution(_ new_id:String) -> String {
var answer = new_id
answer = step1(id: answer)
answer = step2(id: answer)
answer = step3(id: answer)
answer = step4(id: answer)
answer = step5(id: answer)
answer = step6(id: answer)
answer = step7(id: answer)
return answer
}
func step1(id:String) -> String {
return id.lowercased()
}
func step2(id:String) -> String {
let specialCharaters = ["-","_","."]
return id.filter{$0.isLetter || $0.isNumber || specialCharaters.contains(String($0))}.map{String($0)}.joined()
}
func step3(id:String) -> String {
var newId = id
while newId.contains("..") {
newId = newId.replacingOccurrences(of: "..", with: ".")
}
return newId
}
func step4(id:String) -> String {
var newId = id
if newId.first == "." {
newId.removeFirst()
}
if newId.last == "." {
newId.removeLast()
}
return newId
}
func step5(id:String) -> String {
return id.isEmpty ? "a" : id
}
func step6(id:String) -> String {
var newId = id
if newId.count >= 16 {
newId = String(newId.prefix(15))
newId = step4(id: newId)
}
return newId
}
func step7(id:String) -> String {
if id.count == 1 {
return String(id + id + id)
}else if id.count == 2 {
return String(id + String(id.last!))
}
return id
}

 


P.S

 

์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๊ฒƒ

 

isNumber

๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด์คŒ.

 

isLetter

๋ฌธ์ž์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด์คŒ(ํŠน์ˆ˜๋ฌธ์ž ์ œ์™ธ)

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€