쌓고 쌓다
[프로그래머스] 신규 아이디 추천 C++ 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/72410
전체 코드
string solution(string new_id) {
string answer = "";
// 1단계
for (int i = 0; i < new_id.length(); i++)
{
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
new_id[i] += 32;
}
// 2단계
for (int i = 0; i < new_id.length(); i++)
{
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] == '.')
continue;
else
{
new_id.erase(new_id.begin() + i); // begin안하고 i만 했네..
i--;
}
}
//3단계
for (int i = 0; i < new_id.length(); i++)
{
if (new_id[i] == '.' && i + 1 < new_id.length() && new_id[i + 1] == '.')
{
new_id.erase(new_id.begin() + i);
i--;
}
}
//4단계
if (new_id.length() > 0 && new_id[0] == '.')
new_id.erase(new_id.begin());
if (new_id.length() > 0 && new_id[new_id.length() - 1] == '.')
new_id.erase(new_id.end() - 1); // end는 배열의 끝+1을 가리킴 그래서 -1해줌
//5단계
if (new_id.length() == 0)
new_id += 'a';
//6단계
if (new_id.length() >= 16)
{
new_id.erase(new_id.begin() + 15, new_id.end()); // last 앞까지 지움
if (new_id[14] == '.')
new_id.erase(new_id.begin() + 14);
}
//7단계
if (new_id.length() <= 2)
{
while (new_id.length() < 3)
{
new_id += new_id[new_id.length() - 1];
}
}
answer = new_id;
return answer;
}
문제 풀이는 그냥 구현 문제라 요구하는대로 구현을 하면 됩니다.
string iterator랑 메소드에 대한 이해가 없어서 긴가민가, 사용법 찾아가며 풀었네요...
string에 대해 정리를 한번 해야겠습니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 C++ 풀이 (0) | 2022.06.27 |
---|---|
[프로그래머스] 키패드 누르기 C++ 풀이 (0) | 2022.06.27 |
[프로그래머스] 숫자 문자열과 영단어 C++ 풀이 (0) | 2022.06.25 |
[프로그래머스] 로또의 최고 순위와 최저 순위 C++ 풀이 (0) | 2022.06.23 |
[프로그래머스] 신고 결과 받기 C++ 풀이 (0) | 2022.06.22 |
Comments