2022. 10. 10. 10:50ㆍ코딩 테스트 준비
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
예전에 풀었던 것을 정리 중 정규표현식의 중요성을 깨닫게 해준 문제를 정리한다.
내 코드
function solution(new_id) {
var answer = '';
var dot = []
answer = new_id.toLowerCase().replace(/[^0-9a-z._-]/g, "")
var temp = 0;
for(var i = 0; i < answer.length; i++){
if(i != 0) temp = i - 1;
if(answer[i] === '.' && answer[temp] === '.'){
answer = answer.slice(0, temp) + answer.substr(i, answer.length - 1);
i = 0;
}
}
for(var i = 0; i < answer.length; i++){
if(answer[0] === '.') answer = answer.substr(1);
if(answer[answer.length - 1] === '.') answer = answer.substr(0, answer.length - 1);
}
if(answer === '') answer = 'a'
if(answer.length >= 16) answer = answer.substr(0, 15);
if(answer[answer.length-1] === '.') answer = answer.substr(0, answer.length - 1);
if(answer.length <= 2) answer = answer.padEnd(3, answer[answer.length-1]);
return answer;
}
당시 8, 16, 25, 26이 계속 오류가 나왔고 풀면서도 출제자가 원하는 코드는 이게 아니라고 생각했다.
다른 사람의 코드
function solution(new_id) {
const answer = new_id
.toLowerCase() // 1
.replace(/[^\w-_.]/g, '') // 2
.replace(/\.+/g, '.') // 3
.replace(/^\.|\.$/g, '') // 4
.replace(/^$/, 'a') // 5
.slice(0, 15).replace(/\.$/, ''); // 6
const len = answer.length;
return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
replace와 정규표현식으로 깔끔하게 표현한 것이 인상적이다.
또한 인덱스 입력시 해당 위치의 값을 반환하는 charAt과 동일한 문자열을 반복해서 붙이는 repeat 함수로 마무리한 부분에서 배울 것이 많았다고 생각한다.
당시 잘하지는 못했지만 몰랐던 것을 앎을 통해 조금씩 나아지고 있다는 것을 느낄 수 있었다.
나의 오늘는 엉성하지만 내일은 뚜렷해질 것이라는 믿음으로 살아가자.
https://curryyou.tistory.com/234
[자바스크립트] 정규표현식(Regular Expression) 기초/기본 쉽고 상세한 사용 방법 정리(샘플 예제 코
# 정규표현식이란?(Regular Expression: Regex) 정규표현식은 "특정 패턴의 문자열"을 찾기 위한 표현 방식입니다. (이런걸 형식 언어, formal languange라고 합니다.) 정규표현식을 이용하면, 특정 패턴에 매
curryyou.tistory.com
'코딩 테스트 준비' 카테고리의 다른 글
조이스틱 – level 2 (0) | 2023.01.01 |
---|---|
체육복 - level 1 (프로그래머스) (0) | 2023.01.01 |
정수 제곱근 판별 level 1 - 18분 (0) | 2022.10.20 |
로또의 최고 순위와 최저 순위 level 1 (0) | 2022.10.06 |
수포자 문제(완전 탐색) Level 1 (0) | 2022.10.06 |