๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ (72410)

๋ฌธ์ œ๋งํฌ

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ด ๋ฌธ์ œ๋Š” ์ •๊ทœ์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์ •๊ทœ์‹ ํŒจํ„ด์ด ์ต์ˆ™์น˜ ์•Š์•„์„œ ๋‹จ๊ณ„๋ณ„๋กœ ๊ตฌ๋ถ„ํ–ˆ์ง€๋งŒ ํ•œ์ค„๋กœ ์ด์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•œ ์ •๊ทœ์‹์˜ ์˜ˆ
- /[^\w-_.]/g; => [^](๊ด„ํ˜ธ ๋‚ด์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๊ฒƒ)  ์ฆ‰,  \w(์˜์–ด, ์ˆซ์ž), '-', '_', '.' ์„ ์ œ์™ธํ•œ ๊ฒƒ์„ ์˜๋ฏธ
- ๋ฌธ์ž{2, }๋Š” ๋ฌธ์ž๊ฐ€ 2๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋จ์„ ์˜๋ฏธ
- /^\.|$\./g  => '^๋ฌธ์ž'๋Š” ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์—์„œ ๋ฌธ์ž๋ฅผ ์ฐพ๊ณ , '$๋ฌธ์ž'๋Š” ๋ฌธ์ž์—ด์˜ ๋์—์„œ ๋ฌธ์ž๋ฅผ ์ฐพ์Œ
- /^$/g => ์‹œ์ž‘๊ณผ ๋์ด ๋น„์—ˆ์œผ๋ฏ€๋กœ ๋นˆ ๋ฌธ์ž์—ด์„ ์˜๋ฏธ
 
์ •๊ทœํ‘œํ˜„์‹ ์—ฐ์Šต ์‚ฌ์ดํŠธ

 

 

 

function solution(new_id) {
    var answer = '';
    //1๋‹จ๊ณ„ (๋Œ€๋ฌธ์ž -> ์†Œ๋ฌธ์ž) 
    new_id = new_id.toLowerCase();
    
    //2๋‹จ๊ณ„ (์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, -, _, . ์ œ์™ธ ๋ชจ๋“  ๋ฌธ์ž ์‚ญ์ œ)
    let regExp =  /[^\w-_.]/g;
    new_id = new_id.replace(regExp, "");
    
    //3๋‹จ๊ณ„ (์ค‘๋ณต๋œ . ์‚ญ์ œ)
    regExp = /\.{2,}/g;
    new_id = new_id.replace(regExp, ".");
    
    //4๋‹จ๊ณ„ (.๊ฐ€ ๋ฌธ์žฅ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐ)
    regExp = /^\.|\.$/g;
    new_id = new_id.replace(regExp, "");
    
    //5๋‹จ๊ณ„ (๋ฌธ์ž์—ด์ด ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, ๋ฌธ์ž์—ด ์— a๋ฅผ ๋Œ€์ž…)
    regExp = /^$/g;
    new_id = new_id.replace(regExp, "a");
    
    //6๋‹จ๊ณ„ (๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ผ๋ฉด, ์ฒซ 15๊ฐœ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž ์‚ญ์ œ, ์ด๋•Œ ๋งˆ์ง€๋ง‰๋ฌธ์ž๊ฐ€ .์ด๋ฉด ์•ˆ๋จ)
    regExp = /\.$/g;
    new_id = new_id.slice(0,15).replace(regExp, "")
;    
    //7๋‹จ๊ณ„ (๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 3์ผ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต)
    let length = new_id.length;
    length > 2 ? new_id : new_id = (new_id + new_id[length-1].repeat(3-length));
    
    answer = new_id;
    
    return answer;
}