본문 바로가기
코딩테스트

프로그래머스 신규 아이디 추천

by 희안 2021. 4. 20.

이것도 레벨 1 프로그래머스 문제이다. 

주어진 조건대로 그냥 구현했더니 통과했다. 

원래 단계별로 괄호로 나누려했는데 하다보니 그냥 해버렸다 ㅎㅎ...

substr을 유용하게 쓴 문제였다.

string solution(string new_id) {
    string answer = "";
    
	{
		for (int i = 0; i < new_id.size(); i++) {
			if (new_id[i] >= 'A' && new_id[i] <= 'Z') {
				new_id[i] = new_id[i] - 'A' + 'a';
			}
		}
	}
	{
		string ans = "";
		for (int i = 0; i < new_id.size(); i++) {
			if ((new_id[i] >= 'a' && new_id[i] <= 'z')||
				new_id[i]=='-'|| new_id[i] == '_' || new_id[i] == '.' || 
				(new_id[i] >= '0' && new_id[i] <= '9')) {
				ans += new_id[i];
			}
		}

		string ans2 = "";
		bool check = false;
		for (int i = 0; i < ans.length(); i++) {
			if (ans[i] == '.') {
				if (check == true) {
					check = true;
				}
				else {
					ans2 += ans[i];
					check = true;
				}
			}
			else {
				ans2 += ans[i];
				check = false;
			}
		}

		if (ans2[0] == '.') {
			ans2 = ans2.substr(1, ans.length() - 1);
		}
		if (ans2[ans2.length() - 1] == '.') {
			ans2 = ans2.substr(0, ans2.length() - 1);
		}
		if (ans2.length() == 0) {
			ans2 += 'a';
		}
		if (ans2.length() > 15) {
			ans2 = ans2.substr(0, 15);
		}
		if (ans2[ans2.length() - 1] == '.') {
			ans2 = ans2.substr(0, ans2.length() - 1);
		}
		if (ans2.length() < 3) {
			while (1) {
				ans2 += ans2[ans2.length() - 1];
				if (ans2.length() > 2) {
					break;
				}
			}
		}
		answer = ans2;
	}

    return answer;
}

댓글