6.16 미경이 스터디

코변·2022년 6월 16일
0
post-thumbnail

신규 아이디 추천

Photo by Pietro Mattia on Unsplash

import re
def solution(new_id):
    new_id = new_id.lower()
    new_id = re.sub('[^a-z0-9._\-]','',new_id)
    new_id = re.sub('[.]{2,}','.',new_id)
    if new_id.startswith('.'): new_id = new_id[1:];
    if new_id.endswith('.'): new_id = new_id[:-1];
    if new_id =='': new_id = 'a';
    if len(new_id) > 15: new_id = new_id[:15];
    if new_id.endswith('.'): new_id = new_id[:-1];
    if len(new_id) < 3:
        while len(new_id) < 3:
            new_id += new_id[-1]
    return new_id

내가 이해한 룰

이 문제는 시키는대로 따라서 작성하기만 하면 되기때문에 딱히 룰이랄게 없다.

문제풀기

  1. 문자열을 소문자로 치환해준다. (python string에서 제공하는 .lower() 활용)
  2. 정규표현식 sub와 '^' 메타 문자를 활용하여 선언한 것들을 제외한 것들을 다 지웠다.
  3. 마찬가지로 정규표현식을 통해 .이 2번이상 반복되는 것을 하나의 .으로 치환해줬다.
  4. 이부분이 참 마음에 안드는데 .으로 시작하는 값과 .으로 끝나는 값을 string에서 제공하는 함수 startswith, endswith로 .이 처음과 끝에 있는지 검사했다.
  5. 이 뒤는 특별한 로직이 없다.

느낀점

정규표현식 공부가 시급하다. 이거 하나 풀면서도 검색을 몇번이나 한건지 모르겠다. 따로 시간을 내서 공부하지 않으면 안할 것 같으니까 다음 스터디 때 공부해봐야겠다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글