Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/프로그래머스

    [프로그래머스] 신규 아이디 추천 (C++ / JavaScript / Python)

    2021. 7. 8.

    by. Hyeon-Uk

    반응형

    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

    댓글

    관련글

    • [프로그래머스] 카카오 프렌즈 컬러링북 2021.07.11
    • [프로그래머스] 루시와 엘라 찾기 2021.07.10
    • [프로그래머스] 자물쇠와 열쇠 2021.07.02
    • [프로그래머스] 괄호 변환 2021.07.02
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바