21 Mon

์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

'''
https://programmers.co.kr/learn/courses/30/lessons/72410
์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ
[ํ’€์ด]
0. ์ •๊ทœ์‹ ์‚ฌ์šฉ ๋ฌธ์ œ. ์ •๊ทœ์‹์„ ๋ชจ๋ฅธ๋‹ค๋ฉด ๋”์ฐํ•˜๋‹ค.
'''
import re

def solution(new_id):
    new_id = new_id.lower()
    new_id = ''.join(re.findall('[a-z]|[0-9]|[.]|[_]|[-]', new_id))
    new_id = re.sub('[.]{2,}', '.', new_id)
    if len(new_id) and new_id[0] == ".":
        new_id = new_id[1:]
    if len(new_id) and new_id[-1] == ".":
        new_id = new_id[:-1]
    size = len(new_id)
    if not size: new_id += "a"
    if size >= 16:
        new_id = new_id[:15]
    if new_id[-1] == ".":
        new_id = new_id[:-1]
    while len(new_id) < 3:
        new_id = new_id + new_id[-1]
    return new_id
'''
์ •๊ทœ์‹์ด๋ž‘ if๋ฅผ ๋„ˆ๋ฌด ํ˜ผ์žฌํ•ด์„œ ์‚ฌ์šฉํ•œ ๋“ฏ ํ•˜๋‹ค
๋‚˜๋ณด๋‹ค ๋” ์ •๊ทœ์‹์„ ์ž˜ ์“ด ์‚ฌ๋žŒ ์ฝ”๋“œ๋ฅผ ๋ฐฐ์›Œ์•ผ๊ฒ ๋‹ค
์‹ฌ์ง€์–ด ์ฝ”๋“œ ๊ตฌ์„ฑ๋„ ๋ฉ‹์ง€๋‹ค

import re

def solution(new_id):
    st = new_id
    st = st.lower()
    st = re.sub('[^a-z0-9\-_.]', '', st)
    # [^] ๋Š” ํŠน์ • ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•˜๋ผ๋Š” ์˜๋ฏธ
    
    st = re.sub('\.+', '.', st)
    # ์ด ๋ถ€๋ถ„์€ re.sub('[.]{2,}', '.', new_id)์™€ ์ฐจ์ด๋Š” ์—†๋‹ค.
    
    st = re.sub('^[.]|[.]$', '', st)
    # ^๋Š” ~๋กœ ์‹œ์ž‘ํ•˜๋Š”, $๋Š” ~๋กœ ๋๋‚˜๋Š”. ์ด ์ •๊ทœ์‹ ๋ฌธ๋ฒ•์„ ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค. ๋ฌธ์ œ ์˜๋„๋Š” ์ด๊ฑฐ์˜€๋˜๊ฒƒ ๊ฐ™๋‹ค
    
    st = 'a' if len(st) == 0 else st[:15]
    # 5~6๋‹จ๊ณ„๋ฅผ ํ•ฉ์นœ ์กฐ๊ฑด. ๋ฉ‹์žˆ๋‹ค
    
    st = re.sub('^[.]|[.]$', '', st)
    # ์ด ๋•Œ๋Š” ์ฒซ ์‹œ์ž‘์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ณต๋ถ™ํ•œ ๊ฒƒ์œผ๋กœ ์ถ”์ •.
    
    st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
    return st
'''

Last updated

Was this helpful?