Dev
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
블로그 내 검색

Dev

  • 알고리즘

    [프로그래머스] 신규 아이디 추천

    2021. 5. 8.

    by. Dev...

    programmers.co.kr/learn/courses/30/lessons/72410

     

    코딩테스트 연습 - 신규 아이디 추천

    카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

    programmers.co.kr

    단계별로 나오는 설명대로 그대로 구현하면 되는 문제다.

    정규표현식과 3단계 같은 경우 다른사람의 코드를 참고해 풀었다.

    ​

    처음에는 3단계 부분도 정규표현식을 이용해 이렇게 작성했다.

     regex = re.compile('[.]{2,}')
     find = regex.findall(new_id)
     
     if find: # 3단계
         for i in find:
             new_id = new_id.replace(i,'.')
    

    .이 2개이상 나오는 것들을 찾아서 new_id에서 .으로 대체하도록 했는데 테스트케이스 20, 21이 통과가 되지 않았다..

    while '..' in new_id: # 3단계
            new_id = new_id.replace('..', '.')

    while을 사용해 ..들을 모두 .으로 바꿔주니 해결되었다.

     

    그리고 replace 함수 대신 re의 sub함수를 사용해도 된다.

    re.sub('패턴', '바꿀문자열', '문자열', 바꿀횟수)

     

    정답코드

    import re
    def solution(new_id):
        new_id = new_id.lower() # 1단계
        
        regex = re.compile('[^a-z0-9-_.]')
        find = regex.findall(new_id)
        if find: # 2단계
            for i in find:
                new_id = new_id.replace(i, '')
    
        while '..' in new_id: # 3단계
            new_id = new_id.replace('..', '.')
        
        new_id = new_id.strip('.') # 4단계
        
        if not new_id: # 5단계
            new_id = new_id + 'a'
        
        if len(new_id) >= 16: # 6단계
            new_id = new_id[:15]
            new_id = new_id.strip('.')
    
        if len(new_id) <= 2: # 7단계
            new_id = new_id + new_id[-1] * (3 - len(new_id))
           
        return new_id
    

    '알고리즘' 카테고리의 다른 글

    [백준] 11279 최대 힙  (0) 2021.08.12
    [프로그래머스] 주식가격  (0) 2021.05.17
    [프로그래머스] 다리를 지나는 트럭  (0) 2021.05.09
    [백준] 1182 부분수열의 합  (1) 2021.05.06

    댓글

    관련글

    • [백준] 11279 최대 힙 2021.08.12
    • [프로그래머스] 주식가격 2021.05.17
    • [프로그래머스] 다리를 지나는 트럭 2021.05.09
    • [백준] 1182 부분수열의 합 2021.05.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Daum Corp.

Designed by Nana
블로그 이미지
Dev...

티스토리툴바