-
[알고리즘 문제] 신규 아이디 추천알고리즘 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