Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • javascript
  • 하스켈
  • Rust
  • React
  • redis
  • 데이터 타입
  • mysql
  • 알고리즘
  • 문자열
  • Java
  • html
  • koa
  • Flutter
  • go
  • Haskell
  • PostgreSQL
  • html5
  • Til
  • 프로그래머스
  • CSS

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[알고리즘 테스트] Javascript 신규 아이디 추천
etc./Algorithm

[알고리즘 테스트] Javascript 신규 아이디 추천

2022. 1. 12. 10:05
728x90

 

문제 설명 

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

 

맞지 않는 아이디를 입력할 경우, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 

것입니다.

 

다음 카카오 아이디 규칙 입니다.

  • 아이디의 길이는 3자이상 15자 이하일 것 
  • 아이디는 알파벳 소문자, 숫자, 뺴기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있스빈다.
  • 단, 마침표(.)은 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.
function solution(new_id)

먼저 아이디를 만들기 위해 solution이라는 function 에게 new_id를 할당해 줍니다.

    // 상수 값으로 answer를 new_id에 할당
    const answer = new_id
        .toLowerCase()
        .replace(/[^\w-_.]/g, '')
        .replace(/\.{2,}/g, '.')
        .replace(/^\.|\.$/g, '')
        .replace(/^$/, 'a')
        .slice(0, 15).replace(/\.$/, '');

그런뒤 아이디 규칙을 생성할 곳에 상수값으로 new_id를 할당해줍니다.

  .toLowerCase()

먼저 아이디의 규칙은 소문자가 들어가며 이것은 .toLowerCase()라고 선언할 수 있습니다. 문자열을 소문자로 변환해주면서 반환해주는 함수 입니다.

.toUppercase()

반대로 소문자에서 대문자로 반환해주려면 toUpperCase()를 사용해주면 되죠!!

 .replace(/[^\w-_.]/g, '')

이제 아이디를 추천받는 곳에 규칙을 설정해야 하는데 우리는 이것은 정규 표현식 이라 부릅니다.

 

정규 표현식이란 문자열을 나타내는 특정 문자 조합과 대응하기 위해 사용하는 패턴입니다.

개별 숫자- /[0-9]/g

-전체에서 0~9사이에 아무숫자 '하나'를 찾음

개별 문자 - /[to]/g

-전체에서 t혹은 o를 모두 찾음

출처: https://koras02.tistory.com/59 [Koras02코딩웹]

정규 표현식은 이렇게 숫자를 조건으로 하거나 단어를 조건으로 정규표현식을 적용할 수 있습니다.

 

더 다양하게 하고 싶다면 코드를 좀더 길게 표현할 수 있습니다.

 

 .replace(/[^\w-_.]/g, '')

먼저 시작을 알파벳을 소문자로 하기위해 \^w-를 넣어 소문자 규칙을정해줍니다. 그런 뒤 빼기(-)를 추가해주고 

그곳에 밑줄(_) 마침(.)표 조합을 치환해줍니다.  그다음 규칙으로 설정한 것 외 모든 문자를 제거하기위해서 

 

두번째 칸에는 ''을 포함시켜줍니다. 이렇게 하면 첫번째 규칙 외에는 아무런 규칙도 적용되지 않습니다.

 

    .slice(0, 15).replace(/\.$/, '');

마지막으로 입력한 길이가 총 16자 이상이면 new_id 15개를 제외한 나머지 문자를 모두 제거 해줘야합니다.

이것은 slice를 사용햐 16자 이상으로 규칙은 선언 해줍니다.

 

 

순서대로 정규표현식을 정리하자면 

 

  • ^ : 문장의 시작
  • $ : 문자의 끝
  • \w : word 문자
  • .{2,}: . 이 최소 2개이상
  • | : 또는 

 

'etc. > Algorithm' 카테고리의 다른 글

[알고리즘 테스트] 완주하지 못한 선수  (0) 2022.01.13
[알고리즘 테스트] 부족한 금액 계산하기  (0) 2022.01.13
[알고리즘 테스트] 숫자 문자열과 영단어  (0) 2022.01.13
    'etc./Algorithm' 카테고리의 다른 글
    • [알고리즘 테스트] 위장
    • [알고리즘 테스트] 완주하지 못한 선수
    • [알고리즘 테스트] 부족한 금액 계산하기
    • [알고리즘 테스트] 숫자 문자열과 영단어
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바