programmers- lv.1 (신규 아이디 추천)

이예송·2023년 7월 16일

PS

목록 보기
42/97

문제링크: 신규 아이디 추천

✍🏻 Information

content
언어python
난이도⭐️
풀이시간25분
제출횟수2
인터넷검색유무yes




🍒 My Code

import re
def solution(new_id):
    #1
    new_id = new_id.lower()
    #2
    char = "~!@#$%^&*()=+[{]}:?,<>/"
    for c in char:
        if new_id.find(c)!=-1:
            new_id = new_id.replace(c,"")
    #3
    new_id = re.sub("[.]{2,}", ".", new_id)
    #4
    new_id = new_id.strip(".")
    #5
    if len(new_id)==0:
        new_id = "a"
    #6
    if len(new_id)>=16:
        new_id = new_id[:15]
    if new_id[-1]==".":
        new_id = new_id[:14]
    #7
    if len(new_id)<=2:
        new_id+=new_id[-1]*(3-len(new_id))
    return new_id




💡 What I learned

  • strip(): 문자열의 맨 앞과 맨 끝에 있는 필요없는 문자를 삭제해주는 메소드
    • 삭제하고싶은 문자가 여러 개인 경우 strip메소드에 그만큼의 인수를 추가해주면 된다.
      text.strip("."",")
    • lstrip : 왼쪽 끝단의 불필요한 문자열을 삭제
    • rstip : 오른쪽 끝단의 불필요한 문자열을 삭제
  • str.replace(치환하고 싶은 문자열, 새로운 문자, 치환 횟수) : 새로운 문자에 ""을 입력함으로써 replace메소드로 지정 문자열을 삭제가능
  • re 로 정규식 패턴 문자열 처리하기
    1) 정규식 규칙


    2) re.sub(pattern, repl, string) : string 에서 pattern 을 찾아서 repl 로 치환
    3)정규 표현식의 .는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치되기 때문에 . 문자 그대로를 의미하고 싶다면 [.]로 써줘야한다.
    참고사이트 - 파이썬 re 로 정규식 패턴 문자열 처리하기
  • 이전에 풀었었던데 80/100점이었다. 이전 코드에서 틀렸던 부분은 3번이었다. answer = re.sub('((.)\2{1,})', '.', answer)는 answer에서 두 번 이상 반복되는 문자열을 모두 '.'으로 대체한다는 뜻이었다. 정규식을 잘못 짰던것,,

<이전코드>

import re

def solution(new_id):
    answer = ''
    #1
    answer = new_id.lower()
    #2
    char = "~!@#$%^&*()=+[{]}:?,<>/"
    for x in range(len(char)):
        answer = answer.replace(char[x],"")
    #answer = re.sub('[^0-9a-z-_.]', '', answer)
    #3
    answer = re.sub('((.)\\2{1,})', '.', answer)
    #4
    answer = answer.strip(".") 
    #5
    if answer=="":
        answer='a'
    #6
    if len(answer)>=16:
        answer = answer[0:15]
        answer = answer.rstrip(".") 
    #7
    if len(answer)<=2:
        answer = answer+(answer[len(answer) - 1]*(3-len(answer)))
    return answer
  • 문제가 어렵다기보다는 string 다루는 법에 대해 여러가지를 알고 있어야했다.

1개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘보고갑니다 ~ 🫶🏻

답글 달기