-
[JS] 신규 아이디 추천이노베이션 캠프/3주차_알고리즘 2023. 6. 19. 20:04
문제
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
최종 제출
function solution(new_id) { let temp = ''; // 1단계 소문자로 치환 temp = new_id.toLowerCase(); // 2단계 알파벳 소문자, 숫자, -, _, .를 제외한 모든 문자를 제거 temp = temp.replace(/[^a-z0-9\-_.]/gi, ""); // 3단계 .가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 temp = temp.replace(/\.{2,}/g, '.'); // 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. temp = temp.replace(/^\.|\.$/g, ''); // 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입 temp = (temp.length <= 0) ? 'a' : temp; // 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. if (temp.length > 15) { temp = temp.substring(0, 15).replace(/\.$/g, ''); } //7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다. let len = temp.length; if (len < 3) { temp += temp[len-1].repeat(3 - len); } return temp; } result = ""
해설
- toLowerCase() 사용하여 소문자로 치환
- 정규표현식 사용하여 패턴 생성 후 replace() 사용하면 특정 문자들 제거 (2단계~4단계)
- 2단계 정규 표현식 해석: [^a-z0-9\-_.] -> 소문자 a부터 z, 0~9, -, _, . 이 아닌 모든 문자
- 3단계 정규 표현식 해석: \.{2,} -> .이 2번 이상 반복되는 경우
- 4단계 정규 표현식 해석: ^\.|\.$ -> .으로 시작하거나 .으로 끝나는 경우
- 2번의 과정으로 모든 문자열이 제거되는 경우 'a' 값 저장 (5단계)
- substring() 사용하여 길이가 15로 끊어질 수 있도록 함. 정규 표현식과 replace() 사용하여 마침표(.)로 끝나는 경우 해당 문자 제거될 수 있도록 함 (6단계)
- 문자열의 길이와 repeat() 사용하여 문자열 길이가 3이하인 경우 마지막 문자를 붙여서 길이가 3이상 될 수 있도록 함(7단계)
728x90'이노베이션 캠프 > 3주차_알고리즘' 카테고리의 다른 글
[JS] 키패드 누르기 (0) 2023.06.20 [JS] 소수 만들기 (0) 2023.06.19 [JS] 시저 암호 (0) 2023.06.19 [JS] 숫자 문자열과 영단어 (0) 2023.06.19 [JS] 문자열 내림차순으로 배치하기 (0) 2023.06.19