티스토리 뷰

def solution(new_id):
	answer = ''
    number = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    
    # 1, 2단계
    for i in new_id:
    	if ord(i) >= 65 and ord(i) <= 90:
        	new_id = new_id.replace(i, chr(ord(i)+32))
        if not ((i in number) or (ord(i) >= 65 and ord(i) <= 90) or (ord(i) >= 97 and ord(i) <= 122) or i == '-' or i == '_' or i == '.':
        	new_id = new_id.replace(i, "")
    
    # 3단계
    for i in range(len(new_id), 0, -1):
    	tmp = '.' * i
        if tmp in new_id:
        	new_id = new_id.replace(tmp, '.')
    # 4단계
    if new_id[0] == '.' and len(new_id) != 1:
    	new_id = new_id[1:]
    if new_id[-1] == '.' and len(new_id) != 1:
    	new_id = new_id[0:-1]
    elif new_id[-1] == '.':
    	new_id = ""
        
    # 5단계
    if len(new_id) == 0:
    	new_id = "a"
        
    # 6단계
    elif len(new_id) >= 16:
    	new_id = new_id[0:15]
        if new_id[-1] == '.':
        	new_id = new_id[0:-1]
    
    # 7단계
    if len(new_id) <= 2:
    	while len(new_id) != 3:
        	new_id = new_id + new_id[-1]

내 구현에서 마음에 안드는 것은 1, 2 단계.

답을 보니 내가 존재를 까먹고 있었던 python 내장함수들을 이용하면 됐다.

이렇게 하나씩 기억을 상기시키면 되겠지...

 

그렇다면 마음에 드는 답에서 1,2 단계만 가져와본다.

<내가 생각하는 BEST 답안>

new_id = new_id.lower()
for i in new_id:
	if not(i.isalpha() or i.isdigit() or i in ['-', '_', '.']):
    	new_id = new_id.replace(i, "")
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/10   »
일 월 화 수 목 금 토
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
글 보관함