할머니의 콤퓨타 도전기

Programmers: 신규 아이디 추천 본문

Algorithm/Problem Solving

Programmers: 신규 아이디 추천

ji.o.n.e 2021. 4. 29. 02:39

programmers.co.kr/learn/courses/30/lessons/72410#

 

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

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

programmers.co.kr

문제 풀이

  • 문제 설명에 나와있는 단계별로 차근차근 구현하면 된다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

string solution(string new_id) {
    string answer = "";
    // step 1
    for (char &c: new_id)
        c = tolower(c);
    // step 2
    string tmp = "";
    for (char c: new_id){
        if((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '-' || c == '_' || c == '.')
            tmp += c;
    }
    // step 3
    for (int i=0; i<tmp.length(); i++){
        answer += tmp[i];
        if (tmp[i] == '.'){
            while(tmp[i+1] == '.') 
                i++;
        }
    }
    // step 4
    if(answer.length() != 0 && answer[0] == '.')
        answer = answer.substr(1, answer.length()-1);
    if(answer.length() != 0 && answer[answer.length()-1] == '.')
        answer = answer.substr(0, answer.length()-1);
    // step 5
    if(answer == "") answer += 'a';
    // step 6
    if(answer.length() >= 16){
        answer = answer.substr(0,15);
        if(answer[14] == '.')
            answer = answer.substr(0,14);
    }
    // step 7
    while(answer.length() < 3)
        answer += answer[answer.length()-1];
    
    return answer;
}

 

Comments