ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 신규 아이디 추천 c++
    알고리즘/프로그래머스 2022. 5. 14. 14:06
    반응형
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iostream>
    using namespace std;
    
    string solution(string new_id) {
        string answer = "";
        
        for(int i=0; i<7; i++) {
            if(i == 0) {
                for(int j=0; j<new_id.size(); j++) {
                    if(new_id[j]>='A' && new_id[j]<='Z')
                        new_id[j] = tolower(new_id[j]);
                }
            }
            
            else if(i == 1) {
                for(int j=0; j<new_id.size(); j++) {
                    if( (new_id[j] >= 'a' && new_id[j] <= 'z') || (new_id[j] >= '0' && new_id[j] <= '9') || new_id[j] == '-' || new_id[j] == '_' || new_id[j] == '.')
                    answer.push_back(new_id[j]);
                }
            }
            
            
            else if(i==2) {
                int j = 1;
                while(j < answer.length()) {
                    if(answer[j-1] == '.' && answer[j] == '.') {
                        answer.erase(answer.begin() + j);
                        continue; 
                    }
                    j++;
                }
            }
            
            else if(i == 3) {
                if(answer[0] == '.') {
                    answer.erase(answer.begin());
                }
                if(answer[answer.length()-1] == '.') {
                    answer.erase(answer.size()-1);
                }
            }
            else if(i == 4) {
                if(answer.length() == 0) {
                    answer.push_back('a');
                }
            }
            else if(i == 5) {
                if(answer.length() >= 16) {
                    answer.erase(answer.begin() + 15,answer.end());
                        if(answer[answer.length()-1] == '.') {
                            answer.erase(answer.end()-1);
                        } 
                }
            }
            else if(i == 6) {
                if(answer.length()<=2) {
                    char c = answer[answer.length()-1];
                    while(answer.length() != 3) {
                        answer.push_back(c);
                    }
                }
            }
        }
        
        
        return answer;
    }

    단계 수에따라서 id의 모든 문자열을 한번씩 돌려주면 되는 쉬운 구현 문제이다

     

    음... 뭐 딱히 어려운건없고 알아야 되는 함수로는

    1단계 모든 대문자를 소문자로 바꿔주는 tolower 함수  tolower(바꿔줄 문자열의 인덱스삽입)

    3단계 erase 함수 erase(삭제할 문자열의 인덱스)

     

    정도만 알아주면 된다

     

    처음부터 new_id에 있는 모든 문자열을 answer로 복사한뒤 삭제하는 방법으로 접근하는 방법으로 했을때는 정확도가 떨어졌었다 그래서 new_id의 문자열을 answer로 1번 2번 과정을 거친뒤 answer로 push해주니 성공했다. 

     

    구현의 경우 최대한 복잡하지 않은 방법을 설계한뒤 풀어나가야겠다

    728x90
    반응형

    댓글

Designed by Tistory.