문제풀이/프로그래머스
[프로그래머스] 신규 아이디 추천 (C++ / JavaScript / Python)
Hyeon-Uk
2021. 7. 8. 22:00
반응형
https://programmers.co.kr/learn/courses/30/lessons/72410?language=javascript
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
-풀이-
문자열 함수를 이용하여 풀어주었다.
-시간복잡도-
문자열의 길이를 N이라고 한다면, O(N)이 된다.
-코드-
JavaScript코드
function solution(new_id) {
var answer = '';
//1단계
var new_id=new_id.toLowerCase();
//2단계
var temp="";
for(var i=0;i<new_id.length;i++){
var ch=new_id[i];
if((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||ch==='.'||ch==='-'||ch==='_'){
//2단계를 하며 3단계도 같이
if(ch==="."&&temp.length>0&&temp[temp.length-1]==='.'){
continue;
}
else{
temp+=ch;
}
}
}
new_id=temp;
//4단계
if(new_id[0]==='.'){
new_id=new_id.substr(1,new_id.length-1);
}
if(new_id[new_id.length-1]==='.'){
new_id=new_id.substr(0,new_id.length-1);
}
//5단계
if(new_id===""){
new_id="a";
}
//6단계
if(new_id.length>=16){
new_id=new_id.substr(0,15);
if(new_id[14]==="."){
new_id=new_id.substr(0,14);
}
}
//7단계
if(new_id.length<=2){
var c=new_id[new_id.length-1];
while(new_id.length<3){
new_id+=c;
}
}
answer=new_id;
return answer;
}
C++코드
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer="";
//1단계
int len=new_id.length();
for(int i=0;i<len;i++){
if(new_id[i]<='Z'&&new_id[i]>='A'){
new_id[i]=new_id[i]-'A'+'a';
}
}
//2단계
string temp="";
for(int i=0;i<len;i++){
if((new_id[i]>='0'&&new_id[i]<='9')||(new_id[i]>='a'&&new_id[i]<='z')||new_id[i]=='-'||new_id[i]=='_'||new_id[i]=='.'){
//2단계 도중 3단계
if(new_id[i]=='.'&&temp.size()>0&&temp[temp.size()-1]=='.'){
continue;
}
temp+=new_id[i];
}
}
answer=temp;
//4단계
if(answer[0]=='.') answer=answer.substr(1,answer.length()-1);
if(answer[answer.length()-1]=='.') answer=answer.substr(0,answer.length()-1);
//5단계
if(answer.length()==0) answer="a";
//6단계
if(answer.length()>=16){
answer=answer.substr(0,15);
if(answer[answer.length()-1]=='.'){
answer=answer.substr(0,14);
}
}
//7단계
if(answer.length()<=2){
char t=answer[answer.length()-1];
while(answer.length()<3){
answer+=t;
}
}
return answer;
}
Python 코드
def solution(new_id):
answer = ''
#1단계
new_id=new_id.lower()
#2단계
new_id = ''.join(x for x in new_id if x.isalnum() or (x in "-_."))
#3단계
while '..' in new_id:
new_id=new_id.replace('..','.')
#4단계
new_id= new_id[1:] if len(new_id)>1 and new_id[0]=='.' else new_id
new_id=new_id[:-1] if new_id[-1]=='.' else new_id
#5단계
new_id= "a" if len(new_id)==0 else new_id
#6단계
if len(new_id)>=16:
new_id=new_id[:15]
if new_id[-1]=='.':
new_id=new_id[:-1]
#7단계
if len(new_id)<=2:
while len(new_id)<3:
new_id+=new_id[-1]
answer=new_id
return answer
반응형