본문 바로가기
Beakjoon&프로그래머스/파이썬

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

by 현장 2021. 12. 4.

-코드

def solution(s):
    r = ''
    ok = '-_.'
    s = s.lower()
    for i in s:
        if i.isalpha() or i.isdigit() or i in ok:
            r += i
    while '..' in r:
        r = r.replace('..', '.')
    if r[0] == '.':
        if len(r) > 2:
            r = r[1:]
    if r[-1] == '.':
        r = r[:-1]
    if len(r) == 0:
        r += 'a'
    if len(r) >= 16:
        r = r[:15]
        if r[-1] == '.':
            r = r[:-1]
    while len(r) <= 2:
        r += r[-1]
    return r

처음에 코드를 짜다가 lower를 이상하게 써서 찾아서 해결을 하고 '.'이 연속으로 나올 때 바꿔주는 부분을 해결 못해서 찾아보니 replace를 사용하면 된다는 것을 알게 되었습니다. 그리고 len이 2 이하일 경우에도 r = r [1:0]이 실행되어서 인덱스 오류가 나서 해결을 하였습니다.