-
[프로그래머스/Level 1] 신규 아이디 추천 (C++)알고리즘 문제풀이/프로그래머스 2021. 3. 7. 14:58
programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
카카오 기출
문제 해결을 위해 알아두면 좋을 것
1. 대문자 <-> 소문자 변형이 필요할 때, transform() 함수를 사용한다.
2. 문자열에서 알파벳을 찾을 때, isalpha() 함수를 사용한다.
3. 문자열에서 숫자를 찾을 때, isdigit() 함수를 사용한다.
4. 문자열에서 특정 문자를 찾을 때, strchr() 함수를 사용한다.
문자열을 이용한 구현 문제였습니다. 문제에 나온 조건에 맞게 구현만 해주면 됩니다. 다만 3번 조건을 구현하는 과정에서 조금 애를 먹어 다른 블로그를 참고하여 해결하였습니다.
#include <string> #include <vector> #include <cstring> #include <algorithm> using namespace std; string solution(string new_id) { // 1. transform(new_id.begin(), new_id.end(), new_id.begin(), ::tolower); // 2. for(int i = 0; i < new_id.size();) { if(!isalpha(new_id[i]) && !isdigit(new_id[i]) && !strchr("-_.", new_id[i])) { new_id.erase(new_id.begin() + i); } else i++; } // 3. https://ansohxxn.github.io/programmers/73/ 참고 for(int i = 0; i < new_id.size() - 1;) { if(new_id[i] == '.' && new_id[i + 1] == '.') { new_id.erase(new_id.begin() + i); } else i++; } // 4. if(new_id.front() == '.') new_id.erase(new_id.begin()); if(new_id.back() == '.') new_id.pop_back(); // 5. if(new_id.empty()) new_id.push_back('a'); // 6. while(new_id.size() >= 16) { new_id.pop_back(); if(new_id.back() == '.') new_id.pop_back(); } // 7. if(new_id.size() <= 2) { while(new_id.size() < 3) { new_id.push_back(new_id.back()); } } return new_id; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 2] 게임 맵 최단거리 (C++) (0) 2021.03.25 [프로그래머스/Level 1] 2016년 (C++) (0) 2021.03.16 [프로그래머스/Level 3] 멀리 뛰기 (C++) (0) 2021.02.27 [프로그래머스/Level 3] 스타 수열 (C++) (0) 2021.02.26 [프로그래머스/Level 3] 야근 지수 (C++) (0) 2021.02.25