1
+ '''
2
+ https://programmers.co.kr/learn/courses/30/lessons/72410
3
+ 신규 아이디 추천
4
+ 정규식 사용 문제. 정규식을 모른다면 끔찍하다.
5
+ '''
6
+
7
+ import re
8
+
9
+ def solution (new_id ):
10
+ new_id = new_id .lower ()
11
+ new_id = '' .join (re .findall ('[a-z]|[0-9]|[.]|[_]|[-]' , new_id ))
12
+ new_id = re .sub ('[.]{2,}' , '.' , new_id )
13
+ if len (new_id ) and new_id [0 ] == "." :
14
+ new_id = new_id [1 :]
15
+ if len (new_id ) and new_id [- 1 ] == "." :
16
+ new_id = new_id [:- 1 ]
17
+ size = len (new_id )
18
+ if not size : new_id += "a"
19
+ if size >= 16 :
20
+ new_id = new_id [:15 ]
21
+ if new_id [- 1 ] == "." :
22
+ new_id = new_id [:- 1 ]
23
+ while len (new_id ) < 3 :
24
+ new_id = new_id + new_id [- 1 ]
25
+ return new_id
26
+
27
+ '''
28
+ 정규식이랑 if를 너무 혼재해서 사용한 듯 하다
29
+ 나보다 더 정규식을 잘 쓴 사람 코드를 배워야겠다
30
+ 심지어 코드 구성도 멋지다
31
+
32
+ import re
33
+
34
+ def solution(new_id):
35
+ st = new_id
36
+ st = st.lower()
37
+ st = re.sub('[^a-z0-9\-_.]', '', st)
38
+ # [^] 는 특정 문자를 제외하라는 의미
39
+
40
+ st = re.sub('\.+', '.', st)
41
+ # 이 부분은 re.sub('[.]{2,}', '.', new_id)와 차이는 없다.
42
+
43
+ st = re.sub('^[.]|[.]$', '', st)
44
+ # ^는 ~로 시작하는, $는 ~로 끝나는. 이 정규식 문법을 생각을 못했다. 문제 의도는 이거였던것 같다
45
+
46
+ st = 'a' if len(st) == 0 else st[:15]
47
+ # 5~6단계를 합친 조건. 멋있다
48
+
49
+ st = re.sub('^[.]|[.]$', '', st)
50
+ # 이 때는 첫 시작은 고려하지 않아도 된다. 그냥 복붙한 것으로 추정.
51
+
52
+ st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
53
+ return st
54
+ '''
0 commit comments