신규 아이디 추천 - Python

[링크] 신규 아이디 추천

Code

chars = ['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']

def solution(new_id):
    # 1단계
    new_id = new_id.lower()
    
    # 2단계
    string = []
    for cha in new_id:
        if cha in chars:
            string.append(cha)
            
    # 3단계
    for i in range(1, len(string)):
        if string[i] == string[i-1]:
            string.pop(i)
            
    # 4단계
    while True:
        if string:
            if string[0] == '.':
                string.pop(0)
                continue
            if string[-1] == '.':
                string.pop()
                continue
        break
            
    # 5단계
    if not string:
        string.append('a')
        
    # 6단계
    if len(string) > 15:
        string = string[:15]
        while True:
            if string[-1] == '.':
                string.pop()
                continue
            break
            
    # 7단계
    while len(string) < 3:
        string.append(string[-1])
        
    return "".join(string) 

애로사항

chars라는 list를 만드는 것은 원래 구린 풀이 방식이지만..
실전에서 괜히 아스키 문자로 바꿔즈는 ord() 같은거 기억안나면 저렇게 풀어도 괜찮은 수준의 문제였다.
for 문도 어떻게든 많이 줄여서 풀 수 있는 문제였지만 어차피 문자열의 길이가 15밖에 안돼서 그냥 for문 많이 집어넣었다.
처음에는 문자열로 접근하려 했는데 그냥 list로 접근하는게 더 다루기 쉬워서 갈아탔다.
1~7 단계 순서 안지키고 했다가 털려서 순서 지키는 방향으로 바꿨다.
3단계는 index 오류가 뜨기 가장 쉬운 부분이었다.

좋은 웹페이지 즐겨찾기