본문 바로가기

코딩테스트 준비

프로그래머스 신규 아이디 생성 문제풀이

문제 출처: https://programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

 

내가 푼 문제풀이

function solution(new_id) {
  var answer = "";

  new_id = new_id.toLowerCase();
  new_id = new_id.replace(/[^a-z0-9-_.]/g, "");
  // new_id = new_id.replace("..", ".");
  new_id = new_id.replace(/\.+/g, ".");
  new_id = new_id.replace(/^\./, "");
  new_id = new_id.replace(/\.$/, "");
  if (new_id == "") {
    new_id = new_id + "a";
  }
  if (new_id.length >= 16) {
    new_id = new_id.substring(0, 15);
  }
  new_id = new_id.replace(/\.$/, "");
  if (new_id.length <= 2) {
    let last = new_id.charAt(new_id.length - 1);
    while (new_id.length < 3) {
      new_id = new_id + last;
    }
  }

  // new_id.some(i => ["-","_","."].includes(i))
  answer = new_id;

  return answer;
}

console.log(solution("...!@BaT#*..y.abcdefghijklm"));

 

다른 사람들의 풀이에서 배울점

 

정규표현식

 \w : word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다.
 /g: Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다. 
| : 정규표현식 안에서 또는 사용

/^$/ : 공백을 표현

 

 

.slice(0, 15).replace(/\.$/, ''); : 0부터 15번째 글자까지 공백으로 대체

repeat : 문자열 값 반복함

padEnd : 현재 문자열에 인수로 지정된 길이만큼 지정 문자로 채워 새로운 문자열로 반환

 

'코딩테스트 준비' 카테고리의 다른 글