Coding Test/programmers

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

파송송 2022. 8. 1. 17:07
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/72410

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


import re

def solution(new_id):
    answer = ''
	
    # 1 ~ 3
    new_id = new_id.lower()
    new_id = re.sub('[^a-z0-9\-\_\.]', '', new_id)
    new_id = re.sub('\.+','.',new_id)
    # 4
    try:
        if new_id[0] == '.':
            new_id = new_id[1:]
        if new_id[-1] == '.':
            new_id = new_id[0:-1]
    except:
        pass
    #5
    if new_id == "":
        new_id = "a"
    #new_id = re.sub('\s',"a",new_id)
    #print(new_id, " #5")
    #6
    if len(new_id) >= 16:
        new_id = new_id[:15]
    try:
        if new_id[-1] == '.':
            new_id = new_id[0:-1]
    except:
        pass
    #7
    if len(new_id) == 1:
        new_id = new_id + new_id[-1]*2
    if len(new_id) == 2:
        new_id = new_id + new_id[-1]

    answer = new_id

    return answer


좋아요 많은 코드

import re

def solution(new_id):
    st = new_id
    st = st.lower()
    st = re.sub('[^a-z0-9\-_.]', '', st)
    st = re.sub('\.+', '.', st)
    st = re.sub('^[.]|[.]$', '', st)
    st = 'a' if len(st) == 0 else st[:15]
    st = re.sub('^[.]|[.]$', '', st)
    st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
    return st

  • 정규표현식 문제
728x90