- Published on
신규 아이디 추천
- Authors
- Name
- 길재훈
신규 아이디 추천
1단계 newid의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
const filter = 'qwertyuiopasdfghjklzxcvbnm1234567890-_.'
function solution(new_id) {
// 1 단계
new_id = new_id.toLowerCase()
// 2단계
let answer = ''
for (let i = 0; i < new_id.length; i += 1) {
if (filter.includes(new_id[i])) {
answer += new_id[i]
}
}
while (answer.includes('..')) {
answer = answer.replace('..', '.')
}
if (answer[0] === '.') answer = answer.substring(1)
if (answer.length >= 16) answer = answer.substring(0, 15)
if (answer[answer.length - 1] === '.') {
answer = answer.substring(0, answer.length - 1)
}
if (answer.length === 0) answer = 'a'
while (answer.length <= 2) {
answer = answer += answer[answer.length - 1]
}
console.log(answer)
return answer
}
// 새로운 아이디에 들어갈 수 있는 문자열
const filter = 'qwertyuiopasdfghjklzxcvbnm1234567890-_.'
function solution(new_id) {
// 1단계 : 대문자를 소문자로 치환
new_id = new_id.toLowerCase().split('')
// 2단계 : 알파벳 소문자, 숫자, 빼기, 밑줄, 마침표를 제외한 모든 문자 제거
let answer = new_id.filter((str) => filter.includes(str))
// 3단계 : 마침표가 2번 이상 연속된다면, 1개의 마침표로 치환
answer = answer.filter((str, i) => {
return str !== '.' || (str === '.' && answer[i + 1] !== '.')
})
// 4단계 : 마침표가 처음이나 끝에 위치한다면 제거
if (answer[0] === '.') {
answer = answer.slice(1)
}
const removeLastDot = () => {
if (answer.at(-1) === '.') {
// === answer[ answer.length - 1 ]
answer = answer.slice(0, answer.length - 1) // answer.pop();
}
}
removeLastDot()
// 5단계 : 빈 배열일 경우 문자열 "a"를 추가
if (!answer.length) {
answer.push('a')
}
// 6단계 : 길이가 16자 이상이라면, 15자까지 제거
// 제거 한 후에 문자열 끝에 마침표가 있다면 제거
if (answer.length >= 16) {
answer = answer.slice(0, 15)
removeLastDot()
}
// 7단계 : 길이가 2글자 이하라면, 마지막 글자를 3글자가 될 때까지 뒤에 붙여준다.
if (answer.length <= 2) {
const add = Array.from(new Array(3 - answer.length), () => answer.at(-1))
answer = [...answer, ...add] // === answer.concat( add )
}
return answer.join('')
}