λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
"곡뢀" π‘Ÿπ‘’π‘π‘œπ‘Ÿπ‘‘/π΄π‘™π‘”π‘œπ‘Ÿπ‘–π‘‘β„Žπ‘š

[JS/ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] / [2021 KAKAO BLIND RECRUITMENT] μ‹ κ·œ 아이디 μΆ”μ²œ

by ΰ·† Yoni ΰ·† 2022. 2. 17.
728x90

[2021 KAKAO BLIND RECRUITMENT]

μ‹ κ·œ 아이디 μΆ”μ²œ

 

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ‹ κ·œ 아이디 μΆ”μ²œ

μΉ΄μΉ΄μ˜€μ— μž…μ‚¬ν•œ μ‹ μž… 개발자 λ„€μ˜€λŠ” "μΉ΄μΉ΄μ˜€κ³„μ •κ°œλ°œνŒ€"에 λ°°μΉ˜λ˜μ–΄, 카카였 μ„œλΉ„μŠ€μ— κ°€μž…ν•˜λŠ” μœ μ €λ“€μ˜ 아이디λ₯Ό μƒμ„±ν•˜λŠ” 업무λ₯Ό λ‹΄λ‹Ήν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. "λ„€μ˜€"μ—κ²Œ 주어진 첫 μ—…λ¬΄λŠ” μƒˆλ‘œ

programmers.co.kr

 

My μ½”λ“œ

function solution(new_id) {  
    // 1단계 new_id의 λͺ¨λ“  λŒ€λ¬Έμžλ₯Ό λŒ€μ‘λ˜λŠ” μ†Œλ¬Έμžλ‘œ μΉ˜ν™˜ν•©λ‹ˆλ‹€.
    new_id = new_id.toLowerCase();
    // 2단계 new_idμ—μ„œ μ•ŒνŒŒλ²³ μ†Œλ¬Έμž, 숫자, λΉΌκΈ°(-), 밑쀄(_), λ§ˆμΉ¨ν‘œ(.)λ₯Ό μ œμ™Έν•œ λͺ¨λ“  문자λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.
    new_id = new_id.replace(/[^\w-_.]/g, '');
    // 3단계 new_idμ—μ„œ λ§ˆμΉ¨ν‘œ(.)κ°€ 2번 이상 μ—°μ†λœ 뢀뢄을 ν•˜λ‚˜μ˜ λ§ˆμΉ¨ν‘œ(.)둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€.
    new_id = new_id.replace(/\.{2,}/g, '.');
    // 4단계 new_idμ—μ„œ λ§ˆμΉ¨ν‘œ(.)κ°€ μ²˜μŒμ΄λ‚˜ 끝에 μœ„μΉ˜ν•œλ‹€λ©΄ μ œκ±°ν•©λ‹ˆλ‹€.
    new_id = new_id.replace(/^\.|\.$/g, '');
    // 5단계 new_idκ°€ 빈 λ¬Έμžμ—΄μ΄λΌλ©΄, new_id에 "a"λ₯Ό λŒ€μž…ν•©λ‹ˆλ‹€.
    new_id = new_id.replace(/^$/g, 'a');
    // 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ λ¬Έμžλ“€μ„ λͺ¨λ‘ μ œκ±°ν•©λ‹ˆλ‹€.
    // λ§Œμ•½ 제거 ν›„ λ§ˆμΉ¨ν‘œ(.)κ°€ new_id의 끝에 μœ„μΉ˜ν•œλ‹€λ©΄ 끝에 μœ„μΉ˜ν•œ λ§ˆμΉ¨ν‘œ(.) 문자λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.
    new_id = new_id.slice(0, 15);
    new_id = new_id.replace(/\.$/g, '');
    // 7단계 new_id의 길이가 2자 μ΄ν•˜λΌλ©΄, new_id의 λ§ˆμ§€λ§‰ 문자λ₯Ό new_id의 길이가 3이 될 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•΄μ„œ 끝에 λΆ™μž…λ‹ˆλ‹€.
    if(new_id.length <= 2) {
        const len = new_id.length;
        for(let i=0;i<3-len;i++){
            let add = new_id.charAt(len - 1);
            new_id = new_id.concat(add);
        }
    }

    return new_id;
}

 

λ‹€λ₯Έ μ‚¬λžŒμ˜ ν’€μ΄

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);
}
728x90

λŒ“κΈ€