#include <string>
#include <vector>
#include <iostream>

using namespace std;

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

	for (int i = 0; i < new_id.size(); i++)
	{
		//1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
		if (new_id[i] >= 'A' && new_id[i] <= 'Z') new_id[i] += 'a'-'A';

		//2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
		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] == '.'))	{		}
		else
		{
			new_id.erase(new_id.begin() + i);
			i--;
			continue;
		}


		//3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
		if ((new_id[i] == '.' && new_id[i+1] == '.'))
		{
			new_id.erase(new_id.begin() + i + 1);
			i--;
			continue;
		}
		else if ((new_id[i] == '.' && new_id[i - 1] == '.'))
		{
			new_id.erase(new_id.begin() + i);
			i--;
			continue;
		}

		//4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
		if (new_id[0] == '.')
		{
			new_id.erase(new_id.begin());
			i--;
			continue;
		}
		if (new_id[new_id.size() - 1] == '.')
		{
			new_id.erase(new_id.begin() + new_id.size() - 1);
		}
		
	}

	//5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.

	if (new_id.size() == 0)
	{
		new_id.push_back('a');
	}

	//6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
	//	만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.

	for (int i = 0; i < 15 && i < new_id.size(); i++)
	{
		answer.push_back(new_id[i]);
	}

	for (int i = 0; i < answer.size(); i++)
	{
	if (answer[answer.size() - 1] == '.')
	{
		answer.erase(answer.begin() + answer.size() - 1);
	}
	else
	{
		break;
	}

	}


	//7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
	if (answer.size() < 3)
	{
		for (int i = answer.size(); i < 3; i++)
		{
			answer.push_back(answer[i-1]);
		}
	}


	return answer;
}

너무 더럽게 짠것같다..

Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함