PS(중단)/programmers
[2021 KAKAO BLIND] - 신규 아이디 추천 (C++)
히명
2024. 8. 27. 15:53
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
string solution(string new_id) {
// 1단계
transform (new_id.begin(), new_id.end(), new_id.begin(), ::tolower);
// 2단계
string tmp = "";
for (auto x : new_id){
if (isalpha(x) || isdigit(x) || x == '-' || x == '_' || x == '.')
tmp += x;
}
new_id = tmp;
tmp = "";
// 3단계
for (auto x : new_id){
if (x == '.' && tmp.back() == '.') continue;
tmp += x;
}
new_id = tmp;
tmp = "";
// 4단계
if (new_id.front() == '.') new_id.erase(0, 1);
if (new_id.back() == '.') new_id.pop_back();
// 5단계
if(new_id.empty()) new_id = "a";
// 6단계
if (new_id.length() >= 16) new_id.erase(new_id.begin() + 15, new_id.end());
if (new_id.back() == '.') new_id.pop_back();
// 7단계
while (new_id.length() < 3) new_id += new_id.back();
return new_id;
}
1. transform(시작 위치, 마지막 위치, 결과를 저장할 범위, 변환할 함수)
2. 문자열 판단 함수
isalpha : 문자열이 문자인지 아닌지
isdigit : 문자열이 숫자인지 아닌지
3. string str;의 경우
str.front() - 벡터의 첫 번째 요소를 반환
str.back() - 벡터의 마지막 요소를 반환
str.begin() - 벡터의 첫 번째 요소
str.end() - 벡터의 마지막 요소
str.empty() - string이 빈 문자열인지 확인
str.at(index) - index 위치의 문자 반환, 유효한 범위인지 체크
str[index] - index 위치의 문자 반환
str.size() / str.length() - string 요소의 개수를 반환