728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

코드


function solution(new_id) {
    var answer = '';
    answer = new_id
            .toLowerCase() //1단계
            .replace(/[^\w-_.]/g, '') //2단계
            .replace(/\.+/g, '.') //3단계
            .replace(/^\.|\.$/g, ''); //4단계

    if(answer === '') { //5단계
        answer += 'a';
    }

    answer = answer
            .slice(0, 15) //6단계
            .replace(/\.$/g, '')
            .padEnd(3, answer[answer.length-1]); //7단계

    return answer;
}

 

후기


  • 정규식을 연습하기에도, 제대로 찾아보기에도 좋은 문제였다
  • 정규식을 잘 몰라서 처음엔 for문으로 해결해야지 했다가 조건의 2단계부터 막혀버려서 바로 정규식을 공부하고 왔다
  • https://curryyou.tistory.com/234?category=898979 정규식에 대해서 너무 정리가 잘 돼있는 것 같다 큰 도움을 받았다
  • 조건의 7단계에서 사용된 padEnd() 함수는 문자열 길이를 채우는 함수로서 padStart() 라는 짝꿍 함수가 있다
  • padEnd() 사용법 : "string.padEnd(목표길이, 채울 값)" 의 구조를 가지고 있으며, 문자열 string의 길이가 목표길이가 될 때까지 string뒤에  채울 값으로 채워주는 의미이다 (반대로 padStart()는 목표길이가 될 때까지 string 앞에 채워준다)

+ Recent posts