[알고리즘 문제] 신규 아이디 추천

2022. 11. 23. 21:15·알고리즘

 

 

내가 푼 정답

function solution(new_id) {
  // 1단계
  new_id = new_id.toLowerCase();

  // 2단계
  let new_id_temp = new_id;
  var pattern1 = /[0-9]/; //숫자
  var pattern2 = /[a-z]/; //영어

  for (i = 0; i < new_id_temp.length; i++) {
    if (
      pattern1.test(new_id_temp[i]) |
      pattern2.test(new_id_temp[i]) |
      (new_id_temp[i] === "-") |
      (new_id_temp[i] === "_") |
      (new_id_temp[i] === ".")
    ) {
    } else {
      new_id = new_id.replace(new_id_temp[i], "");
    }
  }
  // new_id = new_id.replace(/[^\w-_.]/g, "");

  // 3단계
  while (new_id.indexOf("..") !== -1) {
    new_id = new_id.replace("..", ".");
  }
  // new_id = new_id.replace(/\.+/g, ".");

  // 4단계
  if (new_id[0] === ".") {
    new_id = new_id.slice(1);
  }
  if (new_id[new_id.length - 1] === ".") {
    new_id = new_id.slice(0, -1);
  }

  // 5단계, 6단계
  if (new_id.length === 0) {
    new_id = "a";
  } else if (new_id.length >= 16) {
    new_id = new_id.slice(0, 15);

    if (new_id[new_id.length - 1] === ".") {
      new_id = new_id.slice(0, -1);
    }
  }

  // 7단계
  while (new_id.length <= 2) {
    new_id += new_id[new_id.length - 1];
  }

  return new_id;
}

let new_id = "z-+.^.";
console.log(solution(new_id));

2단계와 3단계의 경우 다른 분들이 푸신 걸 보며 정규식을 이용하여 한 줄로 간단히 풀 수 있다는 것을 알게 되었고, 해당 내용을 각 단계 아래쪽에 주석으로 써놓았다. 정규식을 처음부터 잘 알고 있었다면 훨씬 간단히 풀었을 것이고, 다른 단계의 내용들도 매우 간단해졌을 것이다.

'알고리즘' 카테고리의 다른 글

[알고리즘 문제] 하샤드 수  (1) 2022.11.23
[알고리즘 문제] 시저 암호  (0) 2022.11.23
[알고리즘 문제] 소수 만들기  (0) 2022.11.23
[알고리즘 문제] 문자열 내림차순으로 배치하기  (0) 2022.11.23
[알고리즘 문제] 문자열 내 마음대로 정렬하기  (0) 2022.11.23
'알고리즘' 카테고리의 다른 글
  • [알고리즘 문제] 하샤드 수
  • [알고리즘 문제] 시저 암호
  • [알고리즘 문제] 소수 만들기
  • [알고리즘 문제] 문자열 내림차순으로 배치하기
youjeong_choi
youjeong_choi
  • youjeong_choi
    youjeong
    youjeong_choi
  • 전체
    오늘
    어제
    • 분류 전체보기 (101)
      • HTML, CSS (7)
      • JavaScript (19)
        • 모던 자바스크립트 딥다이브 (4)
      • ReactJS (17)
      • TIL (15)
      • WIL (17)
      • 알고리즘 (17)
      • 네트워크 (5)
      • Vue (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리액트
    항해99 실전프로젝트
    모던자바스크립트딥다이브
    항해99
    알고리즘 문제
    항해99 주특기
    파이썬
    리액트 라이프 사이클
    항해99주특기리액트
    알고리즘
    리액트 라우트
    피니아
    혼공스
    항해99리액트
    항해99주특기
    자바스크립트
    익명 함수
    선언적 함수
    무한렌더링
    항해99리액트숙련주차
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
youjeong_choi
[알고리즘 문제] 신규 아이디 추천
상단으로

티스토리툴바