https://programmers.co.kr/learn/courses/30/lessons/72410?language=cpp
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
문자열 다루기 너무 어려워서 우선 할 수 있는 최대한의 방법으로 코드를 짜봤다.
나중에 문자열 더 열심히 해서 더 줄여봐야지. 다른 사람 코드 풀이보면 엄청 간결하게 잘 짰던데...

#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer = "";
//1단계
for(int i=0; i < new_id.length() ; i++) {
if(new_id[i] >=65 && new_id[i] <=90) new_id[i] +=32;
}
//2단계
string str = "";
for(int i=0; i < new_id.length() ; i++) {
if(new_id[i] >=97 && new_id[i] <=122) {str += new_id[i]; continue;} //소문자인지
if(isdigit(new_id[i]) != 0) {str += new_id[i]; continue;} //숫자인지
if(new_id[i] == '-' ||new_id[i] == '_' ||new_id[i] == '.') {str += new_id[i]; continue;} //원하는 문자인지
}
new_id = str;
//3단계
str = "";
for(int i=0; i < new_id.length() ; i++) {
if(new_id[i] != '.') str += new_id[i];
else {
while(new_id[i] == '.' && i < new_id.length()) i++;
if(i >= new_id.length()) str += ".";
else str= str + "." + new_id[i];
}
}
new_id = str;
//4단계 자를_문자열.substr(시작인덱스, 가져갈 길이)
if(new_id[0] == '.') new_id = new_id.substr(1,new_id.length()-1);
if(new_id[new_id.length()-1] == '.') new_id = new_id.substr(0,new_id.length()-1);
//answer = new_id;
//5단계
if(new_id == "") new_id = "a";
//6단계
if(new_id.length()>= 16) new_id = new_id.substr(0,15);
//마지막에 .이 있는지 한번 더 검증 필요
if(new_id[new_id.length()-1] == '.') new_id = new_id.substr(0,new_id.length()-1);
//7단계
if(new_id.length()<3) {
char c = new_id[new_id.length()-1];
while(new_id.length()<3) new_id += c;
}
answer = new_id;
return answer;
}
'CodingTest Practice > Programmers' 카테고리의 다른 글
프로그래머스 : 숫자 문자열과 영단어 (C++, Lv.1) (0) | 2021.12.30 |
---|---|
프로그래머스 : 없는 숫자 더하기 (C++, Lv.1) (0) | 2021.12.30 |
프로그래머스 : 문자열 다루기 기본 (C++) (0) | 2021.12.30 |
프로그래머스 : 모의고사 (C++, Lv.1) (0) | 2021.12.30 |
프로그래머스 : 로또의 최고 순위와 최저 순위 (C++, Lv.1) (0) | 2021.12.30 |