ror_coding

[Programmers] 신규 아이디 추천 - 72410 본문

Algorithm/Python

[Programmers] 신규 아이디 추천 - 72410

ro_rdil_31 2024. 10. 25. 14:36
728x90

re.findall 과 re.sub를 사용해서 특정 문자만 추출하고, str.strip('.')을 사용해서 앞 뒤 특정 문자만 제거.

 

Question

 

신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, "네오"가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.

 

 

Point

 

  • re.findall ( r'[a-z0-9._-]', ~) : 소문자, 숫자, . _ - 만 찾기.
  • re.sub ( r'\.+' , '.' , ~ ) : ' . ' 이 1개 이상일 때, '.' 로 바꾸기.
  • str.strip ( ' . ' ) : 문자열 가장 앞, 뒤에 .이 있으면 제거.

 

Code

 

import re
def solution(new_id):
    
    new_id = ''.join(re.findall(r'[a-z0-9._-]', new_id.lower())) # 1,2단계 : 소문자, 숫자, '.', '_', '-' 만 추출.
    
    new_id = re.sub(r'\.+','.', new_id) 			# 3단계 : 마침표 2번 이상 연속 -> 1개로.
    
    new_id = new_id.strip('.') 					# 4단계 : 마침표 처음이나 끝에 있으면 제거.
    
    if not new_id : new_id = "a" 				# 5단계 : 빈 문자열이라면, "a" 대입.
    
    if len(new_id) >= 16 : new_id = new_id[:15].strip('.')	# 6단계 : 길이 >= 16, 제거 후 끝에 마침표 있다면 제거.
    
    if len(new_id) <= 2 : 					# 7단계 : 길이 <= 2, 길이 3 될 때까지 마지막 문자 붙임.
        new_id += new_id[-1]*(3-len(new_id))
    
    return new_id

 

now me

On my github

 

728x90