파이썬 알고리즘 : 신규 아이디 추천

문자열

2023년 12월 29일 알고리즘 문제풀이

문제

난이도

Lv.1

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def solution(new_id):
    arr = ['1','2','3','4','5','6','7','8','9','0','-','_','.']
    # 1단계
    new_id = new_id.lower()
    
    # 2단계
    tmp = []
    for i in new_id:
        if  i.islower() == True or i in arr:
            tmp.append(i)
    new_id = ''.join(tmp)
    
    # 3단계
    if len(new_id) >1:
        tmp = []
        for i in range(len(new_id)-1):
            if new_id[i] == '.' and new_id[i+1] == '.':
                continue
            tmp.append(new_id[i])
        tmp.append(new_id[-1])
        new_id = ''.join(tmp)
        
    # 4단계
    if new_id:
        if new_id[0] == '.':
            if len(new_id) == 1:
                new_id = ''
            else:
                new_id = new_id[1:]
        
    # 4단계
    if new_id:
        if new_id[-1] == '.':
            if len(new_id) == 1:
                new_id = ''
            else:
                new_id = new_id[:len(new_id)-1]

        
    # 5단계
    if new_id == '':
        new_id = 'a'
        
    # 6단계
    if len(new_id) >= 16:
        new_id = new_id[:15]
        
    # 6단계
    if new_id[-1] == '.':
        new_id = new_id[:len(new_id)-1]
        
    # 7단계
    if len(new_id) <= 2:
        while len(new_id) < 3:
            new_id = new_id + new_id[-1]
    
    return new_id

문제에 주어진 대로, 순차적으로 해결하면 큰 어려움은 없는 문제였다. 다만 중간중간, 문자열이 존재하지 않게 되는 상황이 발생할 수 있기 때문에 이를 따로 처리하는 로직이 필요하다. 시간 많이 잡아먹는 문제라 좋은 연습이 됐다.