-
반응형
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
반응형'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카카오 프렌즈 컬러링북 (0) 2021.07.11 [프로그래머스] 루시와 엘라 찾기 (0) 2021.07.10 [프로그래머스] 자물쇠와 열쇠 (0) 2021.07.02 [프로그래머스] 괄호 변환 (0) 2021.07.02 [프로그래머스] 문자열 압축 (0) 2021.07.01 댓글