[Algorithm] 신규 아이디 추천 | 프로그래머스

문제 설명


주어진 문자열을 규칙에 맞게 변환하시오
1. 대문자 -> 소문자
2. 소문자, 숫자, '_', '.', '-' 제외한 문자는 제거
3. ..->.
4. 처음, 끝에 위치한 .는 제거
5. 빈문자열 = 'a'
6. 최대 길이 15자
16자 이상인 경우 첫 15문자 제외한 나머지 문자를 제거
제거 후 끝에 위치한 . 제거
7. 길이 2이하인 경우, 마지막 문자를 길이 3이 될 때까지 덧붙이기

🎇 나의 solution


def solution(new_id):
	answer = ''
    # 1. 대문자 -> 소문자
    new_id = new_id.lower()
    # 2. 소문자, 숫자, _, ., - 제외한 문자 제거
    for char in new_id : 
    	if char.isalnum() or char in '_.-':
        	answer += char
    # 3. .. -> .
    while '..' in answer : # 🔑'..'이 존재하지 않을 때까지 제거  
	    answer = answer.replace('..','.')
    # 4. 처음, 끝에 위치한 . 제거
    answer= answer.strip('.')
    # 5. 빈문자열 = 'a'
    answer = 'a' if answer == '' else answer
    # 6. 최대 길이 15자, 끝에 위치한 . 제거
    if len(answer) > 15:
    	answer = answer[:15]
        answer = answer.rstrip('.')
    # 7. 길이 2 이하인 경우 3이 될때까지 맨 마지막 글자 추가
    answer += answer[-1]*(3-len(answer))
   
    return answer

🔑 문자열에서 특정 문자를 제거하는 방법


  1. replace(대상 문자열, 바뀔 문자열) # 원본 문자열이 바뀌는 것 x
text = 'aaa'
text = text.replace('a','') 
print(text) # 'aaa' -> ''
  1. strip(대상 문자열) # 처음, 끝에서 일치하는 문자열 제거
  2. 해당 문자를 제외한 나머지 문자들을 차례로 새로운 변수에 저장 🔑
# .과 &을 제외한 특수문자들을 지워야할 때
text = '=ab.,d&='
answer =''
for char in text :
	if char.isalnum() or word in '.&':
    	answer += char
print(answer) # ='ab.,d&=' -> 'ab.d&'

🔑 문자열 관련 함수


  • 문자열.strip()
    : 처음, 끝에서 매개변수로 주어진 문자열과 일치하는 문자열 제거
  • 문자.isalnum()
    : 해당 문자가 숫자 혹은 알파벳인 경우 True 반환
  • 문자열.lower()
    : 소문자로 치환

좋은 웹페이지 즐겨찾기