[Kotlin] Programmers 신규 아이디 추천 - Level 1
2021. 5. 21. 14:14ㆍ개발/[Algorithm] Programmers Kotlin
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/72410
풀이
fun solution(new_id: String): String {
var answer: String = ""
answer = step1(new_id)
answer = step2(answer)
answer = step3(answer)
answer = step4(answer)
answer = step5(answer)
answer = step6(answer)
answer = step7(answer)
println(answer)
return answer
}
// 대문자를 소문자로
fun step1(new_id: String): String {
return new_id.toLowerCase()
}
// 'a'..'z''와 같은 표현은 알아 둘 것
fun step2(new_id: String): String {
var sb = StringBuilder()
new_id.forEach {
if ((it in 'a'..'z') || (it in '0'..'9') || it == '-' || it == '_' || it == '.') {
sb.append(it)
}
}
return sb.toString()
}
// contains로 포함하면 .으로 바꾸기
fun step3(new_id: String): String {
var answer = new_id
while (answer.contains("..")) {
answer = answer.replace("..", ".")
}
return answer
}
// indexOfFirst는 람다식이 맞으면 index를 아니면 -1을 반환한다.
fun step4(new_id: String): String {
var answer = new_id
var result = StringBuilder()
var first = answer.indexOfFirst { it == '.' }
if (first == 0) {
answer = answer.replaceFirst(".", "")
}
var last = answer.indexOfLast { it == '.' }
if(last != -1 && last == answer.length-1) {
answer = answer.substring(0, last)
}
return answer
}
// 비어있으면 a넣기
fun step5(new_id: String): String {
var result = new_id
if (result == "") {
result += 'a'
}
return result
}
// substring은 a~ b-1까지 부분 분할해준다.
fun step6(new_id: String): String {
var answer = new_id
if (answer.length >= 16) {
answer = answer.substring(0, 15)
}
if (answer[answer.length - 1] == '.') {
answer = answer.substring(0, answer.length - 1)
}
return answer
}
fun step7(new_id: String): String {
var answer = new_id
if (answer.length <= 2) {
var add = answer[answer.length - 1]
while (answer.length != 3) {
answer += add
}
}
return answer
}
반응형
'개발 > [Algorithm] Programmers Kotlin' 카테고리의 다른 글
[Kotlin] Programmers 음양 더하기 - Level 1 (0) | 2021.05.21 |
---|---|
[Kotlin] Programmers 로또의 최고 순위와 최저 순위 -Level1 (0) | 2021.05.21 |