๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/72410
์ฌ์ฉ์๊ฐ ์์ด๋๋ฅผ ์ ๋ ฅํ์ ๋ ๋น์ทํ๋ฉด์ ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์.
ํ์ด
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์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ ๋์ ๋ถ์
๋๋ค.
์์ ๊ฐ์ด ์ฃผ์ด์ง ๋จ๊ณ์ ๋ฐ๋ผ ๊ทธ๋๋ก ๊ตฌํํด์ฃผ๋ฉด ๋๋ค.
- 1๋จ๊ณ
๋ชจ๋ ๋๋ฌธ์ ์ํ๋ฒณ์ ์๋ฌธ์๋ก ๋ง๋ ๋ค.
๋๋ฌธ์ ์ํ๋ฒณ์ ์์ 'A' ์ ์์คํค์ฝ๋๋ 65์ด๊ณ ๋ง์ง๋ง 'Z'์ ์์คํค์ฝ๋๋ 90์ด๋ค. ์ด๊ฑธ ์ด์ฉํด์ ์์ด๋์ ์ฌ์ฉ๋ ๋ฌธ์์ ์์คํค์ฝ๋๊ฐ 65์ 90 ์ฌ์ด๋ผ๋ฉด ๋๋ฌธ์ ์ด๋ฏ๋ก += 32๋ฅผ ํด์ค์ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ค๋ค.
+ 32๋ฅผ ํ๋ ์ด์ ๋ ์๋ฌธ์a์ ์์คํค์ฝ๋๋ 97๋ก 'A'์ 'a'์ ์ฐจ์ด๊ฐ 32๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- 2๋จ๊ณ
์์ด๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฌธ์๊ฐ ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, '-', '_', '.' ๊ฐ ์๋๋ผ๋ฉด ํด๋น ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ค.
์์ด๋์ ๋ฌธ์๋ฅผ ์ฒ์๋ถํฐ ๋๋ฉด์ ์์ 5๊ฐ์ง์ค ํ๋์ ํด๋นํ๋ฉด temp ๋ผ๋ ๋น ๋ฌธ์์ด ํด๋น๋ฌธ์๋ฅผ ์ ๋ถ์ฌ์ฃผ์๋ค. temp์ ๋ถ์ธ ๋ค๋ ๋ป์ ๊ทธ ๋ฌธ์๋ฅผ ์ญ์ ํ์ง ์๊ฒ ๋ค๋ ๋ป์ด๋ค.
string temp = "";
for(int i = 0; i<new_id.length(); i++){
if(is_ok(new_id[i]))
temp += new_id[i];
}
new_id = temp;
์ด๋ is_ok() ํจ์๋ 5๊ฐ์ง ์ค ํ๋์ ํด๋นํ๋ ์ง๋ฅผ true, false๋ก ๋ฆฌํดํด์ฃผ๋ ํจ์์ด๋ค.
- 3๋จ๊ณ
๋ง์นจํ๊ฐ 2๊ฐ์ด์ ๋ถ์ด์์ผ๋ฉด ํ๋๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ์ญ์ ํ๋ค.
์ด๊ฒ ๋ํ ๊ธฐ์กด์ ์์ด๋๋ฅผ ๋๋ฉด์ ์๋ก์ด ๋ฌธ์์ด temp์ ์ด๋ฆด ๋ฌธ์๋ง ๋ถ์ฌ์ฃผ๋ ๋ฐฉ์์ ์ด์ฉํ๋ค.
๋ฌธ์์ด์ ์ฒ์๋ถํฐ ๋๋ฉด์ ์ฒ์ ๋ง์นจํ๊ฐ ๋์ค๋ฉด ์ผ๋จ temp์ ๋ถ์ฌ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ์ํด์ ๋ง์นจํ๊ฐ ๋์ค์ง ์์๋ ๊น์ง ๋ถ์ด์ง ์๊ณ ์คํตํ๋ค. ๊ณผ์ ์ ๋ฐ๋ณตํด์ ์ฒ์ ๋ง์นจํ๊ฐ ๋ฑ์ฅํ ๋๋ง temp์ ๋ถ์ฌ์ฃผ๊ณ ๋ง์นจํ๊ฐ ์ฐ์ํด์ ๋์ค๋ฉด ๋ถ์ฌ์ฃผ์ง ์๋๋ค. ์ด๋ ๋ง์นจํ๊ฐ ์๋ ๋ค๋ฅธ ๋ฌธ์๋ ๋ฌด์กฐ๊ฑด temp์ ๋ถ์ฌ์ฃผ๋๋ก ํ๋ค.
- 4๋จ๊ณ
๋ฌธ์์ด์ ์ฒ์ ๋๋ ๋์ด ๋ง์นจํ๋ฉด ํด๋น ๋ง์นจํ๋ ์ญ์ ํ๋ค.
๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋ฌธ์๋ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์
0๋ฒ ์ธ๋ฑ์ค ๋๋ ๋ง์ง๋ง ์ธ๋ฑ์ค๊ฐ ๋ง์นจํ๋ฉด ์ญ์ ํ๋ค. ๋ง์ฝ ๋๋ค ๋ง์นจํ๋ฉด ๋๋ค ์ญ์ ํ๋ค.
์ด๋ ์ ์ํด์ผํ ์ ์ ๋ง์ฝ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 1์ด๋ฉด ์ฒ์๊ณผ ๋์ด ๊ฐ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ง ์ฒดํฌํด์ฃผ๋ฉด ๋๋ค.
๋ง์ฝ ๋น ๋ฌธ์์ด์ด๋ฉด 0๋ฒ์ธ๋ฑ์ค ์กฐ์ฐจ ์์ผ๋ฏ๋ก 4๋จ๊ณ๋ฅผ ์คํํ ํ์๊ฐ ์๋ค.
- 5๋จ๊ณ
๋ง์ฝ new_id๊ฐ ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด 'a'๋ฅผ ๋ถ์ฌ์ค๋ค.
string์๋ empty()๋ผ๋ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ง์ฝ new_id.empty()๊ฐ true๋ฉด ๋น์ด์๋ค๋ ๋ป์ด๋ฏ๋ก += 'a' ๋ฅผ ํตํด 'a'๋ฅผ ๋ถ์ฌ์ค๋ค.
๋น์ด์์ง ์์ผ๋ฉด ์คํต
- 6๋จ๊ณ
๋ง์ฝ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 16์ ์ด์์ด๋ฉด 15์๋ก ์ค์ธ๋ค.
๋ฌธ์์ด์ ๊ธธ์ด๋ string์ ์๋ length() ํจ์๋ฅผ ํตํด ์ ์ ์๋ค. ๋ง์ฝ length()์ ๋ฆฌํด๊ฐ์ด 16์ด์์ด๋ฉด
substr()ํจ์๋ฅผ ์ด์ฉํด์ ๋ฌธ์์ด์ ์๋ผ์ค๋ค.
substr(0,15)๋ฅผ ํ๋ฉด 0๋ถํฐ ์์ํด์ 15์๋ฅผ ์๋ฅธ๋ค๋ ๋ป์ด๋ฏ๋ก new_id = new_id.substr(0,15)๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ 4๋จ๊ณ๋ฅผ ํ ๋ฒ ์ํ์์ผ์ค๋ค.
- 7๋จ๊ณ
๋ง์ฝ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 2์ดํ๋ผ๋ฉด ๋ง์ง๋ง๋ฌธ์๋ฅผ ๋ค์ ๊ณ์ ๋ถ์ฌ์ ๊ธธ์ด๊ฐ 3์ด ๋๋๋ก ํ๋ค.
์ด๊ฑด while๋ฌธ์ ์ด์ฉํด์ ํ ์ ์๋ค. ๋ง์ง๋ง ๋ฌธ์๋ length() - 1 ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์์ด๋ฏ๋ก length() - 1 ์ ์๋ ๋ฌธ์๋ฅผ
while(new_id.length() <= 3) ๋์์ ๋ฌธ์์ด์ ๋งจ ๋ค์ ๋ถ์ฌ์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด 7๋จ๊ณ ํจ์๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ค.
|
#include <string>
#include <vector>
using namespace std;
bool is_ok(char ch){
bool chk = false;
if(ch - 0 >= 97 && ch - 0 <= 122)
chk = true;
else if(ch == '-' || ch == '_' || ch == '.')
chk = true;
else if(ch - 0 >= 48 && ch <= 57)
chk = true;
return chk;
}
void cut_string(string& new_id){
string temp = "";
for(int i = 0; i<new_id.length(); i++){
if(is_ok(new_id[i]))
temp += new_id[i];
}
new_id = temp;
}
void change_string(string& new_id){
for(int i = 0; i<new_id.length(); i++){
if(new_id[i] - 0 >= 65 && new_id[i] - 0 <= 90)
new_id[i] += 32;
}
}
void remove_dot(string& new_id){
string temp = "";
bool chk = false;
for(int i = 0; i<new_id.length(); i++){
if(new_id[i] == '.' && chk)
continue;
else if(new_id[i] == '.' && !chk){
temp += new_id[i];
chk = true;
}
else{
temp += new_id[i];
chk = false;
}
}
new_id = temp;
}
void is_dot_side(string& new_id){
if(new_id.empty())
return;
if(new_id[0] == '.')
new_id = new_id.substr(1,new_id.length());
if(new_id.empty())
return;
if(new_id[new_id.length()-1] == '.')
new_id = new_id.substr(0,new_id.length()-1);
}
void plus_a(string& new_id){
if(new_id.empty())
new_id += 'a';
}
void reduce_length(string& new_id){
if(new_id.length() >= 16)
new_id = new_id.substr(0,15);
if(new_id[new_id.length()-1] == '.')
new_id = new_id.substr(0,new_id.length() - 1);
}
void increase_length(string& new_id){
if(new_id.length() >= 3)
return;
char temp = new_id[new_id.length() - 1];
while(new_id.length() < 3)
new_id += temp;
}
string solution(string new_id) {
string answer = "";
change_string(new_id);
cut_string(new_id);
remove_dot(new_id);
is_dot_side(new_id);
plus_a(new_id);
reduce_length(new_id);
increase_length(new_id);
answer = new_id;
return answer;
}
|
cs |
๋๋ ๋ฌธ์๊ฐ ๋๋ฌธ์ ์ํ๋ฒณ์ธ์ง ํ์ ํ๊ธฐ ์ํด์ '๋ฌธ์' - 0 ์ ํด์ ์์คํค์ฝ๋๋ฅผ ์์๋ธ ๋ค์ ๋๋ฌธ์ ์ํ๋ฒณ์ ์์คํค์ฝ๋ ๋ฒ์์ธ 65 ~ 90 ์ฌ์ด์ ๋ค์ด๊ฐ๋์ง ํ์ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ if (char >= 'A || char <= 'Z') ์ด๋ฐ์์ผ๋ก๋ ์กฐ๊ฑด๋ฌธ์ ์ธ ์ ์๋ค๋ ๊ฒ์ ์ฒ์์์๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > 1๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ์ฒด์ก๋ณต (0) | 2022.06.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2022.06.13 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.06.13 |