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은 충분하다고 생각합니다