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

KangMyungJoe·2024년 2월 15일
0

algorithm

목록 보기
53/55
post-thumbnail

문제 설명

7단계에 걸쳐, 아이디를 필터링 하는 문제다.


접근 방법

  • 주어진 조건에 맞춰, 하나씩 조건문을 작성
  • 2번과 3번에서는 정규표현식을 사용해 문자들을 제거
  • Regular Expression
  • [^a-z0-9-_.] : - _ . , 영어 소문자, 숫자를 의미
  • \. : 실제 마침표
  • {2,} : 2번 이상 연속해서 반복

작성한 코드

import re

def solution(new_id):
      
    # 1. 대문자 -> 소문자
    answer = new_id.lower()
    
    # 2. 알파벳 소문자, 숫자, -, _, . 제외한 모든 문자 제거
    pattern = r'[^a-z0-9-_.]'
    answer = re.sub(pattern, '', answer)
    
    # 3. 마침표 2번 이상 연속된 부분을 하나의 마침표로 치환
    pattern2 = r'\.{2,}'
    answer = re.sub(pattern2, '.', answer)
            
    # 4. 마침표가 처음이나 끝에 위치한다면 제거
    if len(answer) >= 1 and answer[0] == ".":
        answer = answer[1:]
    
    if len(answer) >= 1 and answer[-1] == ".":
        answer = answer[:-1]

    # 5. 빈 문자열이라면, a를 대입
    if answer == "":
        answer = 'a'
    
    # 6. 길이가 16자 이상이라면, 첫 15개 문자를 제외한 나머지 문자 제거, 
    #    마침표가 끝에 위치한다면 마침표 제거
    if len(answer) >= 16:
        answer = answer[:15]
    
    if answer[-1] == ".":
        answer = answer[:-1]
    
    # 7. 길이가 2자 이하라면, 마지막 문자 복사
    if len(answer) <= 2:
        while(len(answer) < 3):
            answer += answer[-1]
    
    return answer
profile
소통을 잘하는 개발자가 되고 싶습니다.

0개의 댓글