728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제에서 요구하는대로 차례대로 구현하면된다. 주의할점은 숫자가 0~9부터 범위라는것!!
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(string new_id) {
string answer = "";
string tmp="";
//소문자로 바꾸기
for(int i=0;i<new_id.size();i++){
if(new_id[i]>='A'&&new_id[i]<='Z'){
new_id[i]='a'+(new_id[i]-'A');
}
}
for(int i=0;i<new_id.size();i++){ // - _ . 소문자 외 제거하기
if(new_id[i]=='-' ||new_id[i]=='_' || new_id[i]=='.' || new_id[i]>='a' && new_id[i]<='z'|| new_id[i]>='0' && new_id[i]<='9'){
tmp+=new_id[i];
}
}
new_id=tmp;
//.두개 이상 -> 마침표 한개
tmp="";
int cnt=0;
for(int i=0;i<new_id.size();i++){
if(new_id[i]=='.')cnt++;
else{
if(cnt>=1){
tmp+='.';
cnt=0;
}
tmp+=new_id[i];
}
}
new_id=tmp;
// 맨처음 끝 . 삭제
tmp="";
for(int i=0;i<new_id.size();i++){
if((i==0 || i==new_id.size()-1)&& new_id[i]=='.')continue;
tmp+=new_id[i];
}
new_id=tmp;
//빈문자열
if(new_id=="")new_id="a";
// 16자 이상이면 15문자 제외 나머지 모두 제거, 끝이 .이면 .까지 제거
if(new_id.size()>=16){
tmp="";
for(int i=0;i<14;i++){
tmp+=new_id[i];
}
if(new_id[14]!='.')tmp+=new_id[14];
new_id=tmp;
}
//길이가 2장 이하이면 마지막 문제 3될때까지 반복
if(new_id.size()==1){
for(int i=0;i<2;i++)new_id+=new_id[0];
}
if(new_id.size()==2){
new_id+=new_id[1];
}
return new_id;
}
728x90
반응형