728x90
๋ฐ์ํ

Solution
Problem
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ๊ท ์์ด๋ ์ถ์ฒ
์นด์นด์ค์ ์ ์ฌํ ์ ์ ๊ฐ๋ฐ์ ๋ค์ค๋ "์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ"์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์ ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์ ๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. "๋ค์ค"์๊ฒ ์ฃผ์ด์ง ์ฒซ ์ ๋ฌด๋ ์๋ก
programmers.co.kr
Source Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
๋ฐ์ํ
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] 2021 KAKAO BLIND RECRUITMENT ์์ ๊ฒ์ (0) | 2021.03.18 |
---|---|
[Swift] 2021 KAKAO BLIND RECRUITMENT ๋ฉ๋ด ๋ฆฌ๋ด์ผ(Youtube ํ์ด ํฌํจ) (0) | 2021.03.13 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ๋จผ ๋ ธ๋ (์ฌ์ด ํ์ด ํฌํจ) (0) | 2021.03.07 |
[Swift] 2020 KAKAO BLIND RECRUITMENT ์๋ฌผ์ ์ ์ด์ (0) | 2021.03.01 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์ฌ ์ฐ๊ฒฐํ๊ธฐ (5) | 2021.02.20 |
๋๊ธ