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