반응형
문제
// 너무 코드가 길고 작성하는데 시간이 많이 걸렸다... 거의 1시간
// 대부분 2시간 ~ 3시간안에 적어도 3문제 이상을 해결해야하는데 이렇게 코드를 작성하다가는
// 시간안에 다른 문제를 풀지 못할 것 같다..
// 다른 알고리즘 고수분들은 어떻게 풀었을지.. 다른 사람의 풀이와 검색을 통해 확인을 해봐야겠다!!
// 무슨 7줄에 해결을... 이래서 정규표현식 정규표현식 하는건가 ㅠ.ㅠ
// 문자를 다루는 문제를 해결할 떄는 정규표현식을 활용해서 푸는 연습을 해보아야겠다.
function solution(new_id) {
const maxLength = 15;
const minLength = 3;
let recommendationID = replaceUppercaseToLowercase(new_id);
recommendationID = deleteUnallowedString(recommendationID);
recommendationID = changeNextToPeriod(recommendationID)
recommendationID = deleteFirstAndEndPeriod(recommendationID)
recommendationID = replaceStringtoMaxLength(recommendationID).join('')
return checkEmptyString(recommendationID)
// lv.1
function replaceUppercaseToLowercase(text) {
return text.toLowerCase()
}
// lv.2 정규표현식 쓰니깐 개편하네.....
function deleteUnallowedString(text) {
const resultText = text.split('').filter(string => {
const customRegExp = /[a-z0-9._-]/;
if(customRegExp.test(string)) {
return string
}
})
return resultText
}
// lv. 3
function changeNextToPeriod(text) {
const stack = [];
for(let string of text) {
if(string === '.') {
if(stack[stack.length - 1] === '.') {
continue
}
}
stack.push(string)
}
return stack
}
// lv.4 , lv.6-2
function deleteFirstAndEndPeriod(text) {
if(text[0] == '.') text.shift()
if(text[text.length - 1] === '.') text.pop()
return text
}
// lv. 5
function checkEmptyString(string) {
if(string === '') string = 'a'
if(string.length < minLength) {
for(let i = string.length; i < minLength; i++) {
string += string[string.length - 1]
}
}
return string
}
// lv.6
function replaceStringtoMaxLength(string) {
if(string.length >= maxLength) {
string.splice(maxLength, string.length - maxLength)
return deleteFirstAndEndPeriod(string)
}
return string
}
}
반응형
'Algorithm' 카테고리의 다른 글
[Baekjoon] 바이러스 (0) | 2022.05.09 |
---|---|
[Programmers] 크레인 인형뽑기 게임 (JavaScript) (0) | 2022.05.07 |
[Programmers] LV2 영어끝말잇기 (0) | 2022.05.06 |
[Programmers] JadenCase 문자열 만들기 (JavaScript) (0) | 2022.04.27 |
[Programmers] 소수 만들기 (JavaScript) (0) | 2022.04.26 |