본문 바로가기
카카오 코딩 테스트 풀이

신규 아이디 C++

by paysmile 2021. 3. 14.

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

 

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

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

programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

string solution(string new_id) {
	string answer = "";
	vector<char> temp;

	for (int i = 0; i < new_id.size(); i++) {
		if (isupper(new_id[i]))
			temp.push_back(tolower(new_id[i]));
		else
			temp.push_back(new_id[i]);
	}

	for (int i = 0; i < temp.size(); i++) {
		if (!(islower(temp[i]) || isdigit(temp[i]) || temp[i] == '-' || temp[i] == '_' || temp[i] == '.')) {
			temp.erase(temp.begin() + i);
			i -= 1;
		}
	}

	for (int i = 1; i < temp.size(); ) {
		if (temp[i] == '.' && temp[i - 1] == '.') {
			temp.erase(temp.begin() + i);
			continue;
		}
		else i++;
	}

	if (temp.size()>0 && temp[0] == '.')
		temp.erase(temp.begin());

	if (temp.size()> 0 && temp[temp.size() - 1] == '.')
		temp.erase(temp.begin()+temp.size() - 1);

	if (temp.size() == 0)
		temp.push_back('a');

	if (temp.size() > 15) {
		temp.erase(temp.begin() + 15, temp.begin()+temp.size());
	}
	
	if (temp[temp.size() - 1] == '.')
		temp.erase(temp.begin() + temp.size()-1);

	if (temp.size() <= 2) {
		char last = temp[temp.size() - 1];
		while (temp.size()<3) {
			temp.push_back(last);
		}
	}
	for (int i = 0; i < temp.size(); i++)
		answer += temp[i];
	return answer;
}

'카카오 코딩 테스트 풀이' 카테고리의 다른 글

순위 검색 C++  (0) 2021.03.16
매칭 점수 풀이  (0) 2019.09.04
길 찾기 게임 풀이  (0) 2019.09.03
무지의 먹방 라이브  (0) 2019.09.02
후보키 풀이  (0) 2019.09.02