๐ฅDAY +4
https://programmers.co.kr/learn/courses/30/lessons/72410?language=java
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ๊ท ์์ด๋ ์ถ์ฒ
์นด์นด์ค์ ์ ์ฌํ ์ ์ ๊ฐ๋ฐ์ ๋ค์ค๋ "์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ"์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์ ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์ ๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. "๋ค์ค"์๊ฒ ์ฃผ์ด์ง ์ฒซ ์ ๋ฌด๋ ์๋ก
programmers.co.kr
> ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด ๋๋ณด๊ธฐ ํด๋ฆญ!
๋ฌธ์ ์ค๋ช
์นด์นด์ค์ ์
์ฌํ ์ ์
๊ฐ๋ฐ์ ๋ค์ค๋ "์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ"์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์
ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์
๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. "๋ค์ค"์๊ฒ ์ฃผ์ด์ง ์ฒซ ์
๋ฌด๋ ์๋ก ๊ฐ์
ํ๋ ์ ์ ๋ค์ด ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง์ง ์๋ ์์ด๋๋ฅผ ์
๋ ฅํ์ ๋, ์
๋ ฅ๋ ์์ด๋์ ์ ์ฌํ๋ฉด์ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์
๋๋ค.
๋ค์์ ์นด์นด์ค ์์ด๋์ ๊ท์น์
๋๋ค.
- ์์ด๋์ ๊ธธ์ด๋ 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 ๊ฐ์ด "...!@BaT#*..y.abcdefghijklm" ๋ผ๋ฉด, ์ 7๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ณ ๋๋ฉด new_id๋ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
1๋จ๊ณ ๋๋ฌธ์ 'B'์ 'T'๊ฐ ์๋ฌธ์ 'b'์ 't'๋ก ๋ฐ๋์์ต๋๋ค.
"...!@BaT#*..y.abcdefghijklm" → "...!@bat#*..y.abcdefghijklm"
2๋จ๊ณ '!', '@', '#', '*' ๋ฌธ์๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.
"...!@bat#*..y.abcdefghijklm" → "...bat..y.abcdefghijklm"
3๋จ๊ณ '...'์ '..' ๊ฐ '.'๋ก ๋ฐ๋์์ต๋๋ค.
"...bat..y.abcdefghijklm" → ".bat.y.abcdefghijklm"
4๋จ๊ณ ์์ด๋์ ์ฒ์์ ์์นํ '.'๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.
".bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"
5๋จ๊ณ ์์ด๋๊ฐ ๋น ๋ฌธ์์ด์ด ์๋๋ฏ๋ก ๋ณํ๊ฐ ์์ต๋๋ค.
"bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"
6๋จ๊ณ ์์ด๋์ ๊ธธ์ด๊ฐ 16์ ์ด์์ด๋ฏ๋ก, ์ฒ์ 15์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์๋ค์ด ์ ๊ฑฐ๋์์ต๋๋ค.
"bat.y.abcdefghijklm" → "bat.y.abcdefghi"
7๋จ๊ณ ์์ด๋์ ๊ธธ์ด๊ฐ 2์ ์ดํ๊ฐ ์๋๋ฏ๋ก ๋ณํ๊ฐ ์์ต๋๋ค.
"bat.y.abcdefghi" → "bat.y.abcdefghi"
๋ฐ๋ผ์ ์ ๊ท ์ ์ ๊ฐ ์ ๋ ฅํ new_id๊ฐ "...!@BaT#*..y.abcdefghijklm"์ผ ๋, ๋ค์ค์ ํ๋ก๊ทธ๋จ์ด ์ถ์ฒํ๋ ์๋ก์ด ์์ด๋๋ "bat.y.abcdefghi" ์ ๋๋ค.
[๋ฌธ์ ]
์ ๊ท ์ ์ ๊ฐ ์ ๋ ฅํ ์์ด๋๋ฅผ ๋ํ๋ด๋ new_id๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, "๋ค์ค"๊ฐ ์ค๊ณํ 7๋จ๊ณ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์น ํ์ ์ถ์ฒ ์์ด๋๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
[์ ํ์ฌํญ]
new_id๋ ๊ธธ์ด 1 ์ด์ 1,000 ์ดํ์ธ ๋ฌธ์์ด์
๋๋ค.
new_id๋ ์ํ๋ฒณ ๋๋ฌธ์, ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, ํน์๋ฌธ์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
new_id์ ๋ํ๋ ์ ์๋ ํน์๋ฌธ์๋ -_.~!@#$%^&*()=+[{]}:?,<>/ ๋ก ํ์ ๋ฉ๋๋ค.
[์ ์ถ๋ ฅ ์]nonew_idresult
์1 | "...!@BaT#*..y.abcdefghijklm" | "bat.y.abcdefghi" |
์2 | "z-+.^." | "z--" |
์3 | "=.=" | "aaa" |
์4 | "123_.def" | "123_.def" |
์5 | "abcdefghijklmn.p" | "abcdefghijklmn" |
์
์ถ๋ ฅ ์ #1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
7๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ ๋์ new_id๊ฐ ๋ณํํ๋ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
1๋จ๊ณ ๋ณํ ์์ต๋๋ค.
2๋จ๊ณ "z-+.^." → "z-.."
3๋จ๊ณ "z-.." → "z-."
4๋จ๊ณ "z-." → "z-"
5๋จ๊ณ ๋ณํ ์์ต๋๋ค.
6๋จ๊ณ ๋ณํ ์์ต๋๋ค.
7๋จ๊ณ "z-" → "z--"
์
์ถ๋ ฅ ์ #3
7๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ ๋์ new_id๊ฐ ๋ณํํ๋ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
1๋จ๊ณ ๋ณํ ์์ต๋๋ค.
2๋จ๊ณ "=.=" → "."
3๋จ๊ณ ๋ณํ ์์ต๋๋ค.
4๋จ๊ณ "." → "" (new_id๊ฐ ๋น ๋ฌธ์์ด์ด ๋์์ต๋๋ค.)
5๋จ๊ณ "" → "a"
6๋จ๊ณ ๋ณํ ์์ต๋๋ค.
7๋จ๊ณ "a" → "aaa"
์
์ถ๋ ฅ ์ #4
1๋จ๊ณ์์ 7๋จ๊ณ๊น์ง ๊ฑฐ์น๋ ๋์ new_id("123_.def")๋ ๋ณํ์ง ์์ต๋๋ค. ์ฆ, new_id๊ฐ ์ฒ์๋ถํฐ ์นด์นด์ค์ ์์ด๋ ๊ท์น์ ๋ง์ต๋๋ค.
์
์ถ๋ ฅ ์ #5
1๋จ๊ณ ๋ณํ ์์ต๋๋ค.
2๋จ๊ณ ๋ณํ ์์ต๋๋ค.
3๋จ๊ณ ๋ณํ ์์ต๋๋ค.
4๋จ๊ณ ๋ณํ ์์ต๋๋ค.
5๋จ๊ณ ๋ณํ ์์ต๋๋ค.
6๋จ๊ณ "abcdefghijklmn.p" → "abcdefghijklmn." → "abcdefghijklmn"
7๋จ๊ณ ๋ณํ ์์ต๋๋ค.
๐ฅ [์ต์ข ์ฝ๋]
class Solution {
public String solution(String new_id) {
String answer = "";
new_id = new_id.toLowerCase();
new_id = new_id.replaceAll("[^0-9a-z\\-_.]","");
new_id = new_id.replaceAll("\\.{2,}",".");
new_id = new_id.replaceAll("^[.]|[.]$","");
if(new_id.isEmpty()) {
new_id = "a";
}
if(new_id.length() >= 16) {
new_id = new_id.substring(0,15);
new_id = new_id.replaceAll("[.]$","");
} else if (new_id.length() <= 2) {
while(new_id.length() < 3) {
new_id +=(new_id.substring(new_id.length()-1));
}
}
answer = new_id;
return answer;
}
}
๐ฅ [์๊ฐ]
์ ๊ท์์ ๊น๋จน์ด์ ๋ค์ ๊ณต๋ถํ๋ค ใ ใ ์ ๊ท์์ ์ด๋ฒ ๊ธฐํ์ ํ๋ฒ ์ ๋๋ก ์ ๋ฆฌํด์ ํฌ์คํ ํด์ผ๊ฒ ๋ค !
์ฝํ ์ค๋น๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ์ง ์ผ๋ง ๋์ง ์์ ์ฝ๋์ ๋ฏธํกํ ์ ์ด ๋ง์ ์ ์์ต๋๋ค.
๋ถ์กฑํ ์ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ์์ผ๋ก์ ํฌ์คํ ์ ๋ฐ์ํ๊ฒ ์ต๋๋ค! ๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค :)
-zelkova