[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
🔑 문자열에서 특정 문자를 제거하는 방법
- replace(대상 문자열, 바뀔 문자열) # 원본 문자열이 바뀌는 것 x
text = 'aaa'
text = text.replace('a','')
print(text) # 'aaa' -> ''
- strip(대상 문자열) # 처음, 끝에서 일치하는 문자열 제거
- 해당 문자를 제외한 나머지 문자들을 차례로 새로운 변수에 저장 🔑
# .과 &을 제외한 특수문자들을 지워야할 때
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()
: 소문자로 치환
Author And Source
이 문제에 관하여([Algorithm] 신규 아이디 추천 | 프로그래머스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeonhee-7935/Algorithm-신규-아이디-추천-프로그래머스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)