[μΉ΄μΉ΄μ€ λΈλΌμΈλ 2021] μ κ·μμ΄λ μΆμ² :: string μ¬μ© λ¬Έμ
μ κ· μμ΄λ μΆμ²
λμ΄λ : β ββββ
κ±Έλ¦° μκ° : 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)