문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
문제에서 주어진 조건대로 풀면 되는 문제였습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string> | |
#include <vector> | |
#include <algorithm> | |
using namespace std; | |
bool isFitForSecondRound(char c) | |
{ | |
return (c >= 'a' && c <= 'z') | |
|| (c >= '0' && c <= '9') | |
|| c == '-' | |
|| c == '_' | |
|| c == '.'; | |
} | |
string solution(string new_id) { | |
string answer = new_id; | |
// 1단계 | |
for (int i = 0; i < answer.length(); i++) | |
{ | |
if (answer[i] >= 'A' && answer[i] <= 'Z') | |
{ | |
answer[i] += 'a' - 'A'; | |
} | |
} | |
// 2단계 | |
string temp; | |
for (int i = 0; i < answer.length(); i++) | |
{ | |
if (isFitForSecondRound(answer[i])) | |
{ | |
temp += answer[i]; | |
} | |
} | |
answer = temp; | |
temp = ""; | |
// 3단계 | |
for (int i = 0; i < answer.length(); i++) | |
{ | |
if (i != answer.length() - 1 | |
&& answer[i] == '.' && answer[i + 1] == '.') | |
{ | |
temp += '.'; | |
while (i != answer.length() - 1 && answer[i + 1] == '.') | |
{ | |
i++; | |
} | |
continue; | |
} | |
temp += answer[i]; | |
} | |
answer = temp; | |
temp = ""; | |
// 4단계 | |
while (!answer.empty() && answer[0] == '.') | |
{ | |
answer = answer.substr(1); | |
} | |
while (!answer.empty() && answer[answer.length() - 1] == '.') | |
{ | |
answer = answer.substr(0, answer.length() - 1); | |
} | |
// 5단계 | |
if (answer.empty()) | |
{ | |
answer = "a"; | |
} | |
// 6단계 | |
if (answer.length() >= 16) | |
{ | |
answer = answer.substr(0, 15); | |
if (answer[answer.length() - 1] == '.') | |
{ | |
answer = answer.substr(0, answer.length() - 1); | |
} | |
} | |
// 7단계 | |
if (answer.length() <= 2) | |
{ | |
char c = answer[answer.length() - 1]; | |
while (answer.length() < 3) | |
{ | |
answer += c; | |
} | |
} | |
return answer; | |
} |

개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 키패드 누르기 (0) | 2021.11.19 |
---|---|
[Programmers] 숫자 문자열과 영단어 (0) | 2021.11.14 |
[Programmers] n^2 배열 자르기 (1) | 2021.10.28 |
[Programmers 위클리 챌린지 12주차] 피로도 (2) | 2021.10.25 |
[Programmers] 나머지가 1이 되는 수 찾기 (0) | 2021.10.24 |