문제
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
단순 구현 문제이다
코드
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
#include<iostream>
using namespace std;
string solution(string new_id)
{
string answer = "";
// 1단계
for (char& c : new_id)
{
c = tolower(c);
}
// 2단계
for(int i=0;i<new_id.length();i++)
{
char c=new_id[i];
if(c=='.' || c=='_' || c=='-') continue;
if((int)c>='a' && (int)c<='z') continue;
if((int)c>='0' && (int)c<='9') continue;
new_id.erase(remove(new_id.begin(), new_id.end(), c), new_id.end());
i--;
}
// 3단계
for (size_t i = 0; i < new_id.size(); ++i)
{
if (new_id[i] == '.' && i + 1 < new_id.size() && new_id[i + 1] == '.')
{
new_id.erase(i, 1); --i;
}
}
// 4단계
if (!new_id.empty() && new_id.front() == '.')
{
new_id.erase(0, 1);
}
if (!new_id.empty() && new_id.back() == '.')
{
new_id.pop_back();
}
// 5단계
if (new_id.empty())
{
new_id = "a";
}
// 6단계
if (new_id.size() >= 16)
{
new_id = new_id.substr(0, 15);
if (new_id.back() == '.') { new_id.pop_back(); }
}
// 7단계
while (new_id.size() < 3)
{
new_id += new_id.back();
}
return new_id;
}
'개발' 카테고리의 다른 글
[프로그래머스] n+1 카드게임 (C++) (0) | 2024.12.01 |
---|---|
[프로그래머스] 개인정보 수집 유효기간 (C++) (2) | 2024.11.30 |
[프로그래머스] 주사위 고르기 (C++) (0) | 2024.11.22 |
[프로그래머스] 소수 찾기 (1) | 2024.11.19 |
플로이드 와샬 알고리즘(Floyd Warshall) (1) | 2024.11.18 |