쌓고 쌓다

[프로그래머스] 신규 아이디 추천 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] 신규 아이디 추천 C++ 풀이

승민아 2022. 6. 24. 22:20

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

전체 코드

string solution(string new_id) {
    string answer = "";

    // 1단계
    for (int i = 0; i < new_id.length(); i++)
    {
        if (new_id[i] >= 'A' && new_id[i] <= 'Z')
            new_id[i] += 32;
    }

    // 2단계
    for (int i = 0; i < new_id.length(); i++)
    {
        if ((new_id[i] >= 'a' && new_id[i] <= 'z') || (new_id[i] >= '0' && new_id[i] <= '9')
            || new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
            continue;
        else
        {
            new_id.erase(new_id.begin() + i); // begin안하고 i만 했네..
            i--;
        }
    }

    //3단계
    for (int i = 0; i < new_id.length(); i++)
    {
        if (new_id[i] == '.' && i + 1 < new_id.length() && new_id[i + 1] == '.')
        {
            new_id.erase(new_id.begin() + i);
            i--;
        }
    }

    //4단계
    if (new_id.length() > 0 && new_id[0] == '.')
        new_id.erase(new_id.begin());
    if (new_id.length() > 0 && new_id[new_id.length() - 1] == '.')
        new_id.erase(new_id.end() - 1); // end는 배열의 끝+1을 가리킴 그래서 -1해줌

    //5단계
    if (new_id.length() == 0)
        new_id += 'a';

    //6단계
    if (new_id.length() >= 16)
    {
        new_id.erase(new_id.begin() + 15, new_id.end()); // last 앞까지 지움
        if (new_id[14] == '.')
            new_id.erase(new_id.begin() + 14);
    }

    //7단계
    if (new_id.length() <= 2)
    {
        while (new_id.length() < 3)
        {
            new_id += new_id[new_id.length() - 1];
        }
    }

    answer = new_id;
    return answer;
}

 

문제 풀이는 그냥 구현 문제라 요구하는대로 구현을 하면 됩니다.

string iterator랑 메소드에 대한 이해가 없어서 긴가민가, 사용법 찾아가며 풀었네요...

string에 대해 정리를 한번 해야겠습니다.

 

Comments