프로그래머스 알고리즘 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
    }
}

평가 

문제를 보고 반가웠다.

보자마자 순서별로 함수형으로 풀면 나오겠구나 생각했다.

보기에는 아주 깔끔하다

중요한건 정규표현식의 활용

블로그에 정규표현식 다루기 포스트를 올려야겠다 생각했다.

아직 함수형이 익숙하지가 않아서 좀 더 공부를 해야겠다.