Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ท ์์ด๋ ์ถ์ฒ ๋ณธ๋ฌธ
๐ ๋ฌธ์
์นด์นด์ค์ ์
์ฌํ ์ ์
๊ฐ๋ฐ์ ๋ค์ค๋ "์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ"์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์
ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์
๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. "๋ค์ค"์๊ฒ ์ฃผ์ด์ง ์ฒซ ์
๋ฌด๋ ์๋ก ๊ฐ์
ํ๋ ์ ์ ๋ค์ด ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง์ง ์๋ ์์ด๋๋ฅผ ์
๋ ฅํ์ ๋, ์
๋ ฅ๋ ์์ด๋์ ์ ์ฌํ๋ฉด์ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์
๋๋ค.
๋ค์์ ์นด์นด์ค ์์ด๋์ ๊ท์น์
๋๋ค.
- ์์ด๋์ ๊ธธ์ด๋ 3์ ์ด์ 15์ ์ดํ์ฌ์ผ ํฉ๋๋ค.
- ์์ด๋๋ ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, ๋นผ๊ธฐ(-), ๋ฐ์ค(_), ๋ง์นจํ(.) ๋ฌธ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋จ, ๋ง์นจํ(.)๋ ์ฒ์๊ณผ ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ํ ์ฐ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
"๋ค์ค"๋ ๋ค์๊ณผ ๊ฐ์ด 7๋จ๊ณ์ ์์ฐจ์ ์ธ ์ฒ๋ฆฌ ๊ณผ์ ์ ํตํด ์ ๊ท ์ ์ ๊ฐ ์
๋ ฅํ ์์ด๋๊ฐ ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง๋ ์ง ๊ฒ์ฌํ๊ณ ๊ท์น์ ๋ง์ง ์์ ๊ฒฝ์ฐ ๊ท์น์ ๋ง๋ ์๋ก์ด ์์ด๋๋ฅผ ์ถ์ฒํด ์ฃผ๋ ค๊ณ ํฉ๋๋ค.
์ ๊ท ์ ์ ๊ฐ ์
๋ ฅํ ์์ด๋๊ฐ new_id ๋ผ๊ณ ํ๋ค๋ฉด,
1๋จ๊ณ new_id์ ๋ชจ๋ ๋๋ฌธ์๋ฅผ ๋์๋๋ ์๋ฌธ์๋ก ์นํํฉ๋๋ค.
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์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ ๋์ ๋ถ์
๋๋ค.
[์ ํ์ฌํญ]
new_id๋ ๊ธธ์ด 1 ์ด์ 1,000 ์ดํ์ธ ๋ฌธ์์ด์
๋๋ค.
new_id๋ ์ํ๋ฒณ ๋๋ฌธ์, ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, ํน์๋ฌธ์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
new_id์ ๋ํ๋ ์ ์๋ ํน์๋ฌธ์๋ -_.~!@#$%^&*()=+[{]}:?,<>/ ๋ก ํ์ ๋ฉ๋๋ค.
๐ก ์์ด๋์ด
์นํํ๋ ๋จ๊ณ๊ฐ ๋ง์ผ๋ ์ ๊ท์ ์ด์ฉํ๊ธฐ
โ๏ธ ํ์ด
function solution(new_id) {
var answer = '';
let reg = /[^a-zA-Z0-9-_.]/g;
let dot = /\.+/g;
let startEndDot = /^\.|\.$/g;
new_id = new_id.toLowerCase(); // 1. ์๋ฌธ์๋ก ์นํ
new_id = new_id.replace(reg, ''); // 2. reg ๋นผ๊ณ ''๋ก ๋ฐ๊พธ๊ธฐ
new_id = new_id.replace(dot, '.'); // 3. ์ฐ์๋ . ์นํ
new_id = new_id.replace(startEndDot, ''); // 4. ์ฒ์์ด๋ ๋ . ์นํ
if(new_id.length === 0){ // 5. ๋น ๋ฌธ์์ด์ด๋ฉด a ๋์
new_id = 'a';
}
if(new_id.length >= 16){ // 6. ๊ธธ์ด๊ฐ 16 ์ด์์ด๋ฉด 15๊ฐ๋ง ์๋ฅด๊ณ , ๋์ด . ์ธ ๊ฒฝ์ฐ ์นํ
new_id = new_id.slice(0, 15).replace(/\.$/, '');
}
if(new_id.length <= 2){ // 7. ๊ธธ์ด๊ฐ 2 ์ด์์ด๋ฉด 3์ด ๋ ๋๊น์ง ๋ง์ง๋ง ๋ฌธ์ ๋ฐ๋ณต
let str = new_id[new_id.length -1]
while(new_id.length !== 3){
new_id += str;
}
}
return new_id;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ (0) | 2023.02.02 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (2) | 2023.02.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์น์์ด(2) (0) | 2023.02.01 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (2) | 2023.02.01 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํคํจ๋ ๋๋ฅด๊ธฐ (2) | 2023.02.01 |