https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 풀이
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(string new_id) {
string answer = "";
//1
for(auto &c : new_id){
if(isupper(c)){
c = tolower(c);
}
}
//2
string tmp = "";
for(const auto &c : new_id){
if(islower(c) || isdigit(c) || c == '-' || c == '.' || c == '_'){
tmp+=c;
}
}
new_id = tmp;
//3
size_t pos;
string tar = "..";
while(!new_id.empty() && (pos = new_id.find(tar)) != string::npos )
{
new_id.erase(pos, 1); // ".." 을 "."으로 통합
}
//4
while(!new_id.empty() && (new_id[0] =='.' || new_id.back() == '.'))
{
if(new_id.front() == '.'){
new_id.erase(new_id.begin()); // == (0, 1) 0번째 인덱스 1 글자 삭제
}
if(new_id.back() == '.'){
new_id.erase(new_id.end()-1);
}
}
//5
if(new_id.empty()){
new_id += "a";
}
//6-1
if(new_id.size() >=16){
new_id = new_id.substr(0, 15);
while(new_id.back()== '.')
{
//6-2
new_id.erase(new_id.size() - 1, 1); // new_id.size() -1 == new_id.end() - 1
}
}
//7
while(new_id.size() < 3){
new_id += new_id[new_id.size()-1];
}
answer = new_id;
return answer;
}
타인코드
#include <bits/stdc++.h>
using namespace std;
string solution(string new_id) {
for (char& ch : new_id) if ('A' <= ch && ch <= 'Z') ch |= 32;
string ret;
for (char& ch: new_id) {
if ('a' <= ch && ch <= 'z' ||
'0' <= ch && ch <= '9' ||
strchr("-_.", ch)) ret += ch;
}
new_id = ret;
ret.clear();
for (char& ch: new_id) {
if (!ret.empty() && ret.back() == '.' && ch == '.') continue;
ret += ch;
}
if (ret.front() == '.') ret.erase(ret.begin());
if (ret.back() == '.') ret.pop_back();
if (ret.empty()) ret = "a";
if (ret.size() >= 16) ret = ret.substr(0, 15);
if (ret.back() == '.') ret.pop_back();
while (ret.size() <= 2) ret += ret.back();
return ret;
}
back()를 잘 활용했네.
'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| lv3 sql) 있었는데요 없었습니다. (0) | 2026.04.22 |
|---|---|
| lv3 ) 숫자게임 (0) | 2026.04.22 |
| LV4 sql) 상품을 구매한 회원 비율 구하기 (0) | 2026.04.18 |
| LV3) 베스트앨범 [다시] (0) | 2026.04.16 |
| SQL LV4) 년, 월, 성별 별 상품 구매 회원 수 구하기[다시] (0) | 2026.04.15 |
