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

박민하·2022년 8월 20일
0

python 문제

목록 보기
39/49

문제

✅ 코드

1. 풀이

import re

def solution(new_id):
    answer = new_id.lower()
    answer = re.sub("[^a-z0-9\-\_\.]","",answer)
    answer = re.sub("(\.)+", ".", answer)
    answer = re.sub("(^\.)|(\.$)", "", answer)
    answer = re.sub("^$", "a", answer)
    answer = answer[:15]
    answer = re.sub("(\.$)", "", answer)
    while len(answer) <= 2:
        answer += answer[-1]
    return answer

2. 다른 사람의 코드

def solution(new_id):
    answer = ''
    # 1
    new_id = new_id.lower()
    # 2
    for c in new_id:
        if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
            answer += c
    # 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    # 5
    if answer == '':
        answer = 'a'
    # 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7
    while len(answer) < 3:
        answer += answer[-1]
    return answer

☑️ 핵심 코드

1. re 모듈 sub() 메서드

# re.sub(정규 표현식, 치환 문자, 대상 문자열)

2. 대소문자 치환: upper(), lower()

str = 'Hello'
str.upper()
> 'HELLO'
str.lower()
> 'hello'

3. 정규표현식

profile
backend developer 🐌

0개의 댓글