-
프로그래머스 신규 아이디 추천 c++알고리즘/프로그래머스 2022. 5. 14. 14:06반응형
#include <string> #include <vector> #include <cstring> #include <iostream> using namespace std; string solution(string new_id) { string answer = ""; for(int i=0; i<7; i++) { if(i == 0) { for(int j=0; j<new_id.size(); j++) { if(new_id[j]>='A' && new_id[j]<='Z') new_id[j] = tolower(new_id[j]); } } else if(i == 1) { for(int j=0; j<new_id.size(); j++) { if( (new_id[j] >= 'a' && new_id[j] <= 'z') || (new_id[j] >= '0' && new_id[j] <= '9') || new_id[j] == '-' || new_id[j] == '_' || new_id[j] == '.') answer.push_back(new_id[j]); } } else if(i==2) { int j = 1; while(j < answer.length()) { if(answer[j-1] == '.' && answer[j] == '.') { answer.erase(answer.begin() + j); continue; } j++; } } else if(i == 3) { if(answer[0] == '.') { answer.erase(answer.begin()); } if(answer[answer.length()-1] == '.') { answer.erase(answer.size()-1); } } else if(i == 4) { if(answer.length() == 0) { answer.push_back('a'); } } else if(i == 5) { if(answer.length() >= 16) { answer.erase(answer.begin() + 15,answer.end()); if(answer[answer.length()-1] == '.') { answer.erase(answer.end()-1); } } } else if(i == 6) { if(answer.length()<=2) { char c = answer[answer.length()-1]; while(answer.length() != 3) { answer.push_back(c); } } } } return answer; }
단계 수에따라서 id의 모든 문자열을 한번씩 돌려주면 되는 쉬운 구현 문제이다
음... 뭐 딱히 어려운건없고 알아야 되는 함수로는
1단계 모든 대문자를 소문자로 바꿔주는 tolower 함수 tolower(바꿔줄 문자열의 인덱스삽입)
3단계 erase 함수 erase(삭제할 문자열의 인덱스)
정도만 알아주면 된다
처음부터 new_id에 있는 모든 문자열을 answer로 복사한뒤 삭제하는 방법으로 접근하는 방법으로 했을때는 정확도가 떨어졌었다 그래서 new_id의 문자열을 answer로 1번 2번 과정을 거친뒤 answer로 push해주니 성공했다.
구현의 경우 최대한 복잡하지 않은 방법을 설계한뒤 풀어나가야겠다
728x90반응형'알고리즘 > 프로그래머스' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT[1차] 캐시 c++ (0) 2022.08.10 프로그래머스 크레인 인형뽑기 게임 c++ (1) 2022.06.29 프로그래머스 신고결과받기 c++ (0) 2022.06.29 프로그래머스 숫자 문자열과 영단어 (0) 2022.05.14 프로그래머스 실패율 c++ (0) 2022.05.13