์ ๊ท ์์ด๋ ์ถ์ฒ
๋์ด๋ : โ โโโโ
๊ฑธ๋ฆฐ ์๊ฐ : 30๋ถ
=> ๋ฐ์ฑ!
๋ฌธ์
์ ๊ท ์์ด๋ ์ถ์ฒ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
๋ฌธ์ ์ค๋ช
์นด์นด์ค์ ์
์ฌํ ์ ์
๊ฐ๋ฐ์ ๋ค์ค
๋ ์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์
ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์
๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. ๋ค์ค์๊ฒ ์ฃผ์ด์ง ์ฒซ ์
๋ฌด๋ ์๋ก ๊ฐ์
ํ๋ ์ ์ ๋ค์ด ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง์ง ์๋ ์์ด๋๋ฅผ ์
๋ ฅํ์ ๋, ์
๋ ฅ๋ ์์ด๋์ ์ ์ฌํ๋ฉด์ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์
๋๋ค.
๋ค์์ ์นด์นด์ค ์์ด๋์ ๊ท์น์
๋๋ค.
- ์์ด๋์ ๊ธธ์ด๋ 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์ ๋ํ๋ ์ ์๋ ํน์๋ฌธ์๋ -_.~!@#$%^&*()=+[{]}:?,<>/
๋ก ํ์ ๋ฉ๋๋ค.
์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool getBool(char a) {
if((a >= 'a' && a <= 'z') || (a >= '0' && a <= '9') || a =='-' || a == '_' || a == '.')
return true;
return false;
}
string solution(string new_id) {
string answer = "";
// 1๋จ๊ณ
transform(new_id.begin(), new_id.end(), new_id.begin(), ::tolower);
// 2๋จ๊ณ
for(int i=0; i<new_id.size();){
if(!getBool(new_id[i]))
new_id.erase(i, 1);
else
i++;
}
// 3๋จ๊ณ
char pre_char = ' ';
int index = 0;
while(index<new_id.size()){
char now_char = new_id[index];
if(pre_char == '.' && now_char == '.')
new_id.erase(index, 1);
else{
index++;
pre_char = now_char;
}
}
// 4๋จ๊ณ
if(new_id[0]=='.')
new_id.erase(0,1);
if(new_id[new_id.size()-1]=='.')
new_id.erase(new_id.size()-1,1);
// 5๋จ๊ณ
if(new_id.size()==0)
new_id = "a";
// 6๋จ๊ณ
if(new_id.size()>15)
new_id = new_id.substr(0,15);
if(new_id[new_id.size()-1]=='.')
new_id.erase(new_id.size()-1,1);
// 7๋จ๊ณ
char a = new_id[new_id.size()-1];
while(new_id.size()<3){
new_id.append(1, a);
}
answer = new_id;
return answer;
}
์ฑ์ ๊ฒฐ๊ณผ
์ฃผ์ํ ๊ฒ
์ฌ์ฉํ๋ ํจ์ ํ๋ํ๋์ฉ ์ธ์ฐ์
- transform(str.begin(), str.end(), str2.begin(), ::tolower)
- str.erase(index, len)
- str.append(len, char)
Comment