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

Effy_ee·2023년 11월 1일
0

코딩테스트

목록 보기
79/118

👾(Lv.01)신규 아이디 추천
https://school.programmers.co.kr/learn/courses/30/lessons/72410

🖥️ 답안

def solution(new_id):
    answer = ''
    index=0
#가능한 문자들 정의
    valid=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','-','_','.','0','1','2','3','4','5','6','7','8','9']
    #new_id를 str의 리스트로 변경
    ll=list(map(str,new_id))
    
    for l in range(len(ll)):
    	#처음에 . 를 추가하려는 시도 거르기
        if len(answer)==0 and ll[l]=='.':
            continue
        #연속적으로 . 을 추가하는 것 거르기
        elif ll[l]=='.' and answer[-1]=='.':
            continue
        #vaild 안에는 없지만 대문자는 추가해줘야하니까
        elif ll[l].isupper():
            answer+=ll[l].lower()
            continue
        #그 이외에 vaild 안에 없는 문자들 거르기
        elif str(new_id[l]) not in valid:
            continue
        #위의 조건들을 다 통과하면 해당 문자 answer에 추가
        answer+=str(new_id[l])

    if len(answer) > 0 and answer[-1]=='.':
        answer=answer[:-1]
    
    if len(answer)==0: 
        answer+='a'*3
        
    if len(answer)>=16:
        answer=answer[:15]
        if len(answer) > 0 and answer[-1]=='.':
            answer=answer[:-1]
    if len(answer)<=2:
        while len(answer) < 3:
            answer += answer[-1]
            
    return answer

0개의 댓글