programmers
2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천 + C++ String 정리
윤만석
2022. 7. 28. 14:24
lv1 문제입니다
string의 기능을 알아야하고 아스키코드 개념이 있어야합니다
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer = "";
string temp="";
for(int i=0;i<new_id.length();i++){
if('A'<=new_id[i] && new_id[i]<='Z'){
new_id[i]=(new_id[i]-'A'+'a');
}
if((new_id[i]<'a' || new_id[i]>'z')&&new_id[i]!='.'&&new_id[i]!='-'&&new_id[i]!='_'&&(new_id[i]<'0'||new_id[i]>'9'))continue;
else temp.push_back(new_id[i]);
}
for(int i=0;i<temp.length();i++){
answer.push_back(temp[i]);
if(temp[i]=='.'){
while(temp[i+1]=='.'){
i++;
}
}
}
if(answer[0]=='.')
answer=answer.substr(1);
if(answer[answer.length()-1]=='.')
answer.pop_back();
if(answer.empty())
answer.push_back('a');
if(answer.length()>=16){
answer=answer.substr(0,15);
if(answer[answer.length()-1]=='.')
answer.pop_back();
}
while(answer.length()<=2){
answer.push_back(answer[answer.length()-1]);
}
return answer;
}
C++ 자주쓰는 string 클래스를 정리하겠습니다.
string str;
str.front()
str의 맨 앞 인자를 반환 <char>
str.back()
str의 맨 뒤 인자를 반환 <char>
str.length()
str의 길이를 반환 <int>
str.size()와 같습니다
str.clear()
str을 빈 string으로 만들어줍니다. 반환값은 없습니다 <void>
str.empty()
str의 길이가 0이면 true, 아니면 false를 반환합니다 <bool>
str.substr(int idx,int len)
함수의 인자가 하나인경우 <void>
str[idx]부터 str끝까지 남습니다
ex)string str="ABCDE"
str.substr(2)==>str="CDE"
함수의 인자가 둘인경우
str[idx]에서 길이 len만큼 남습니다
ex)string str="ABCDE"
str.substr(2,2)==>str="CD"
str.push_back(char c)
str뒤에 c를 붙입니다 <void>
str.pop_back()
str맨 뒷값을 제거합니다 <void>
str.append(string str)
push_back과 다릅니다 string을 뒤에 붙여줍니다 <void>
이 외에도 많지만 여기까지만 알아도 string은 충분하다고 생각합니다