알고리즘/문제
프로그래머스 알고리즘 Level 1 코틀린 2021 KAKAO BLIND RECRUITMENT신규 아이디 추천
무삿
2023. 1. 25. 19:32
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 - 성공
class Solution {
fun solution(new_id: String): String {
val new = new_id.lowercase()
.replace("[^a-z0-9_.-]".toRegex(),"")
.replace("[.]{2,}".toRegex(), ".")
.replace("^[.]|$[.]".toRegex(),"")
.let { it.ifEmpty { "a" } }
.let { if(it.length>15) it.slice(0..14) else it }
.replace("[.]$".toRegex(),"")
.let { s -> var str = s
if(s.length<3) { repeat(3-s.length) { str = str.plus(s.last()) } }
str
}
return new
}
}
평가
문제를 보고 반가웠다.
보자마자 순서별로 함수형으로 풀면 나오겠구나 생각했다.
보기에는 아주 깔끔하다
중요한건 정규표현식의 활용
블로그에 정규표현식 다루기 포스트를 올려야겠다 생각했다.
아직 함수형이 익숙하지가 않아서 좀 더 공부를 해야겠다.