https://programmers.co.kr/learn/courses/30/lessons/72410
처음 프로그래머스 코테 연습 문제를 풀어보았다.
문제 하나 푸는데 거의 하루종일 걸렸지만
해결했고 뿌듯했다.
1. 이해
// 우리가 풀려고 하는 문제는 무엇일까?
// 우리가 알고 있는 것은 무엇인가?
// 주어진 조건은 무엇인가?
// 기존에 비슷한 문제를 본적이 있는가?
2. 계획
// 어떤 정보를 가져와서
// 매트릭스를 만들고
// ~만든다.
3. 실행
4. 회고
// 이것을 어디에 적용할 수 잇을까?
// 어떻게 하면 효율적으로 풀 수 있을까?
// 어떻게 하면 효과적으로 풀 수 있을까?
위와 같은 단계를 정해두고 생각하면서 풀어보니
어떤식으로 문제를 풀어나가야할지 감이 잡히고
계획했던 대로 하나씩 풀어보니까
잘 풀리더라~
function solution(new_id) {
const originLength = new_id.length;
let result = new_id
.toLowerCase()
.replace(/[^\w\-_.]/g, '')
.replace(/\.{2,}/g, '.')
.replace(/^\.|\.$/g, '');
if (result.length >= 16) {
result = result.slice(0, 15).replace(/\.$/, '');
}
if (result === '') {
return 'aaa';
}
if (result.length <= 2) {
return result + result[result.length -1].repeat(3 - result.length)
}
return result;
}
하나씩 splice()함수를 사용하다가,,,
이건 아니다 싶어서 생각해본 정규 표현식 이용하기
🤧 계획
- 대문자를 소문자로 바꾸기
- 알파벳 소문자, 숫자, -, _, . 을 제외한 문자 지우기
- .연속 사용 된거 . 하나로 바꾸기
- .가 처음이나 끝에 있으면 제거
- 빈문자열인 경우 a로 대체
- 길이가 3자 이상 15자 이하
- 길이가 2자 이하인 경우 마지막 문자열 추가
🥴 실행
- toLowerCase()
- replace(/[^\w\-_.]/g, '')
^ : 문자열의 시작 부분
[] : 문자 선택
\w : 모든 문자열, 숫자를 의미
g : 문자열 내의 모든 패턴을 검색 - replace(/\.{2,}/g, '.')
{숫자,} : 해당 숫자 만큼 반복 - replace(/^\.|\.$/g, '')
$ : 문자열의 끝 부분 - if (result.length >= 16) {
result = result.slice(0, 15).replace(/\.$/, '');
} - if (result === '') {
return 'aaa';
} - if (result.length <= 2) {
return result + result[result.length -1].repeat(3 - result.length)
}
'코테연습' 카테고리의 다른 글
42. 숫자 문자열과 영단어 (0) | 2022.05.12 |
---|---|
41. 로또의 최고순위와 최저순위 (0) | 2022.05.11 |
39.Valid Parentheses (0) | 2022.04.28 |
38.Moving Zeros To The End (0) | 2022.04.14 |
37.Simple Pig Latin (0) | 2022.04.11 |
댓글