프로그래머스 Lv.1 코딩테스트
[프로그래머스 Lv.1] 신규 아이디 추천
하다블
2022. 2. 17. 18:27
반응형
문제는 다음과 같습니다.
코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
풀이 코드는 다음과 같습니다.
#include <string>
#include <vector>
using namespace std;
string solution(string new_id)
{
for(int i = 0; i < new_id.length(); i++)
{
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
{
new_id[i] = tolower(new_id[i]);
}
}
for(int i = 0; i < new_id.length(); )
{
if ((new_id[i] >= 'a' && new_id[i] <= 'z') || (new_id[i] >= '0' && new_id[i] <= '9')
|| new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
{
i++;
continue;
}
new_id.erase(new_id.begin() + i);
}
for(int i = 1; i < new_id.length(); )
{
if (new_id[i] == '.' && new_id[i - 1] == '.')
{
new_id.erase(new_id.begin() + i);
continue;
}
else i++;
}
if (new_id.front() == '.')
{
new_id.erase(new_id.begin());
}
if (new_id.back() == '.')
{
new_id.erase(new_id.end() - 1);
}
if (new_id.length() == 0)
{
new_id = "a";
}
if (new_id.length() >= 16)
{
while(new_id.length() != 15)
{
new_id.erase(new_id.begin() + 15);
}
}
if (new_id.back() == '.')
{
new_id.erase(new_id.end() - 1);
}
if (new_id.length() <= 2)
{
while(new_id.length() != 3)
{
new_id += new_id.back();
}
}
return new_id;
}
코드가 길어보이지만 이 문제의 핵심은 단순하지만 길이가 긴 코드를 틀리지 않고 한 번에 작성하는 것이라고 생각합니다.
주어진 조건에 단계별 설명이 있기 때문에 한 단계씩 프로그래밍한다면 어렵지 않게 해결하실 수 있을 겁니다.
반응형