문제 보러 가기 👈 클릭!
1단계 :
lower() 함수 사용하여 문자열 내부의 모든 대문자를 소문자로 변환
2단계 :
<처음 풀이>
아스키코드 사용하여 숫자범위(48~57), 알파벳소문자범위
(97~122), 가능한 특수문자(95, 45, 46) 일 경우에만 answer에 더해줌
<새로운 풀이>
isalpha() , isdigit(), in연산자 사용 하여 해당 문자가 숫자 또는 알파벳소문자 또는 가능한 특수문자 인지 판별하여 맞는것들만 answer에 더해줌
<또 다른 풀이>
정규표현식 !! (조만간 제대로 공부해서 해당 방법도 추가하자)
3단계 :
answer에 '..'가 없을 때까지 '..'을 '.'로 대체 (문자열.replace('..', '.') 사용)
4단계 :
양쪽 끝에 '.'가 있다면 제거 (문자열.strip('.') 사용)
5단계 :
문자열이 비었다면 (if not '': ) 'a'대입
-> ''는 비어있기 때문에 False 의미
6단계 & 7단계:
길이 > 15일때
-> 0~15까지 자르고, 맨 오른쪽 '.'제거(왼쪽은 4단계에서 제거 되었기 때문) (슬라이싱, 문자열.rstrip('.') 사용)
길이 < 3 일때
-> 길이가 3이 될 때까지(while len() != 3) 마지막문자 계속 더함 (문자열 +=문자열[-1])
def solution(new_id):
answer = ''
#1단계
new_id = new_id.lower()
#2단계
for c in new_id:
if c.isalpha() or c.isdigit() or c in ['-','_','.']:
answer += c
#3단계
while '..' in answer:
answer = answer.replace('..', '.')
#4단계
answer = answer.strip('.')
#5단계
if not answer:
answer = 'a'
#6단계 & 7단계
if len(answer) > 15:
answer = answer[0:15].rstrip('.')
elif len(answer) < 3:
while len(answer) != 3:
answer += answer[-1]
return answer