문제 설명
제한 사항 및 입출력 예제
개념
주어진 문자열에 대해서, 문제에서 제시한 7단계의 규칙을 순차적으로 적용하여 새로운 문자열을 생성하는 문제다. 각 단게는 특정 문자열 패턴의 변환 및 제거를 포함하며, 모든 단계를 차례대로 완료하면 최종적으로 원하는 문자열 형태를 얻을 수 있다.
풀이
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string solution(string new_id)
{
string answer = "";
// 1단계
transform(new_id.begin(), new_id.end(), new_id.begin(), static_cast<int(*)(int)>(std::tolower));
// 2단계
new_id.erase(remove_if(new_id.begin(), new_id.end(), [](char ch) {
return !(('a' <= ch && ch <= 'z') || ('0' <= ch && ch <= '9') || ch == '-' || ch == '_' || ch == '.');
}), new_id.end());
// 3단계
for(int i = 1; i < new_id.size(); ++i)
{
if(new_id[i] == '.' && new_id[i - 1] == '.')
{
new_id.erase(i, 1);
i--;
}
}
// 4단계
if (!new_id.empty() && new_id.front() == '.')
new_id.erase(new_id.begin());
if (!new_id.empty() && new_id.back() == '.')
new_id.erase(new_id.size() - 1);
// 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.erase(new_id.size() - 1);
// 7단계
while (new_id.size() < 3)
new_id += new_id.back();
return new_id;
}
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 개인정보 수집 유효기간 with C++ (0) | 2023.07.22 |
---|---|
[프로그래머스] 귤 고르기 with C++ (0) | 2023.06.28 |
[프로그래머스] 소수 찾기 with C++ (0) | 2023.06.19 |
[프로그래머스] 행렬의 곱셈 with C++ (2) | 2023.06.18 |
[프로그래머스] N개의 최소공배수 with C++ (0) | 2023.06.13 |