min

프로그래머스 신규 아이디 추천 자바스크립트 본문

알고리즘

프로그래머스 신규 아이디 추천 자바스크립트

minprogramming 2023. 6. 19. 11:53

<문제>

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

<나의 풀이>

function solution(new_id) {
    var answer = '';
    //1.
    new_id = new_id.toLowerCase()
    //2.
    new_id = new_id.replace(/[^\w\-\.]/g , "")
    //3.
    new_id = new_id.replace(/\.{2,}/g,".")
    //4.
    new_id = new_id.replace(/^\./,"")
    new_id = new_id.replace(/\.$/,"")
    //5.
    new_id = (new_id.length === 0) ? 'a' : new_id
    //6.
    new_id = new_id.slice(0,15)
    new_id = new_id.replace(/\.$/,"")
    //7.
    while (new_id.length < 3) {
        new_id += new_id[new_id.length - 1]
    }
    return new_id;
}

<다른 사람의 풀이>

function solution(nid) {
  var ans = "";
  for (let i = 0; i < nid.length; i++) {
    let c = nid[i].toLowerCase();
    if ("0123456789abcdefghijklmnopqrstuvwxyz.-_".indexOf(c) === -1) continue;
    if (c === "." && ans[ans.length - 1] === "." && nid[i - 1]) continue;
    ans += c;
  }
  if (ans[0] === ".") ans = ans.slice(1);
  ans = ans.slice(0, 15);
  if (ans[ans.length - 1] === ".") ans = ans.slice(0, ans.length - 1);
  if (!ans) ans = "a";
  while (ans.length < 3) ans += ans[ans.length - 1];
  return ans;
}

<궁금중>

정규표현식

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions

 

정규 표현식 - JavaScript | MDN

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchA

developer.mozilla.org