반응형
https://programmers.co.kr/learn/courses/30/lessons/72410
#include <string>
#include <vector>
// #include <iostream>
using namespace std;
string solution(string new_id) {
string answer = "";
string id=new_id;
int len=id.size();
for(int i=0;i<len;i++) {
char c=id[i];
if(c>=65 && c<=90) {
c+=32;
}
if((c>='a' && c<='z') || (c>='0' && c<='9')
|| c=='-' || c=='_' || c=='.') {
answer+=c;
}
else {
continue;
}
}
// cout<<"step1,2==> "<<answer<<endl;
id=answer;
answer="";
len=id.length();
for(int i=0;i<len;i++) {
char c=id[i];
if(c=='.') {
int commaIdx=i;
for(int j=i+1;j<len;j++) {
if(id[j]!='.') {
break;
}
if(id[j]=='.') {
commaIdx=j;
}
}
answer+='.';
i=commaIdx;
}
else {
answer+=c;
}
}
// cout<<"step3==> "<<answer<<endl;
id=answer;
answer="";
len=id.length();
for(int i=0;i<len;i++) {
char c=id[i];
if(i==0 && c=='.') {
continue;
}
if(i==len-1 && c=='.') {
continue;
}
answer+=c;
}
// cout<<"step4==> "<<answer<<endl;
id=answer;
answer="";
len=id.length();
if(len==0) {
answer='a';
id=answer;
answer="";
}
// cout<<"step5==> "<<" id="<<id<<" answer="<<answer<<endl;
len=id.length();
if(len>=16) {
for(int i=0;i<15;i++) {
char c=id[i];
answer+=c;
}
id=answer;
answer="";
}
// cout<<"step6==> "<<" id="<<id<<" answer="<<answer<<endl;
len=id.length();
if(len<=2) {
char lastC=id[len-1];
for(int i=0;i<3;i++) {
if(i>=len) {
answer+=lastC;
}
else {
char c=id[i];
answer+=c;
}
}
id=answer;
answer="";
}
len=id.length();
for(int i=0;i<len;i++) {
char c=id[i];
if(i==0 && c=='.') {
continue;
}
if(i==len-1 && c=='.') {
continue;
}
answer+=c;
}
if(answer=="") {
answer=id;
}
// cout<<"step7==> "<<" id="<<id<<" answer="<<answer<<endl;
return answer;
}
문자열 처리 문제다.
C++로 문자열 처리하려니까 너무 지저분해진다..
문제 해결을 위해서는
순차적으로 신규 아이디 문자열에 대해
7단계에 걸쳐서 문자열을 변환 처리해주면 된다.
조건을 놓치지 않고 잘 처리하도록 하자.
p.s. 가독성을 더 개선할 수는 있지만
푸는 속도에 우선순위를 두고 빠르게 푸는 연습중이기 때문에 맞으면 패스!
반응형
'개발 > 알고리즘 & 자료구조' 카테고리의 다른 글
[카카오][2021 인턴십] 숫자 문자열과 영단어 (2) | 2021.08.26 |
---|---|
[2020 카카오 인턴쉽][알고리즘][프로그래머스] 키패드 누르기 (2) | 2021.08.23 |
[프로그래머스][카카오] 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴십) (6) | 2021.08.13 |
[프로그래머스][위클리] 2주차 (6) | 2021.08.12 |
[프로그래머스][SQL] 고양이와 개는 몇 마리 있을까 (3) | 2021.08.11 |