문제 링크
https://programmers.co.kr/learn/courses/30/lessons/72410
풀이
function solution(new_id) {
let rec_id = new_id
rec_id = rec_id
.toLowerCase()
.replace(/[^a-z0-9-_.]/g, '')
.replace(/\.+/g, '.')
.replace(/^\.|\.$/g, '')
.replace(/^$/, 'a')
.slice(0, 15)
.replace(/\.$/, '');
return rec_id.length > 2
? rec_id
: rec_id + rec_id[rec_id.length - 1].repeat(3 - rec_id.length);
}
정규표현식을 활용해서 각각의 단계마다 특정 조건을 만족하는 문자열을 replace로 교체하였다.
맨 앞을 의미하는 ^이나 맨 뒤를 의미하는 $를 사용한 정규표현식은 여러 가지 경우가 나올 수 없으므로 global 플래그를 사용하지 않아도 된다. 그러나, /^\.|\.$/의 경우에는 맨 앞과 맨 뒤 모두 해당하는 경우 두 개를 변경해야 하므로 global 플래그를 붙여야 한다. 다만 이 문제에서는 6단계에서 마지막 마침표를 제거하는 단계가 있기 때문에 따로 global 플래그를 붙이지 않아도 통과가 가능하다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 2] 거리두기 확인하기 - JavaScript (0) | 2022.05.09 |
---|---|
[프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript (0) | 2022.05.09 |
[프로그래머스 Level 1] [1차] 비밀지도 - JavaScript (0) | 2022.05.06 |
[프로그래머스 Level 3] 다단계 칫솔 판매 - JavaScript (0) | 2022.04.11 |
[프로그래머스 Level 1] 완주하지 못한 선수 - JavaScript (0) | 2022.04.06 |