파이썬 공부 중이라 파이썬이랑 친해지기 위해 알고리즘도 파이썬으로 첫 도전!
제일 애먹었던 부분이
step 3. 2번 이상 연속된 .마침표 부분을 하나의 마침표(.) 치환하는 부분
처음에는 for문을 사용했지만, 최대한 for문은 지양하고 싶어서 정규식으로 변경했다.
정규식 표현: [.]{2,} : [.] 마침표가 {2,} 2번이상 될 경우에 대한 정규식
import re
def solution(new_id):
answer = ''
# 1.소문자 치환
answer = new_id.lower()
# 2.알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)
regex = re.compile('[^a-z0-9-_.]')
answer = re.sub(regex, "", answer)
# 3. 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
answer = re.sub('[.]{2,}', '.', answer)
# 4. 처음과 끝에 .포함이면 제거하기
answer = answer.lstrip('.')
answer = answer.rstrip('.')
# 5. 위에 한 후에 빈문자열이면 new_id에 "a"를 대입함
if(not answer):
answer = "a"
# 6. 16자 문자 이상이면 첫 15개 문자 제외한 나머지 문자 제거
if(16 <= len(answer)):
answer = answer[0:15]
answer = answer.rstrip('.')
# 7. new_id의 길이가 2자 이하라면, 길이가 3될 때까지 마지막 문자로 채우기
if(len(answer) <= 2):
for a in range(len(answer), 3):
answer += answer[len(answer)-1]
if(len(answer) == 3):
break
return answer
다른 분들 코드와 비교했을 때 많이 부족함을 느낀다..!!....
더 효율적으로 풀고 싶으신 분들은 패스해주세요..!!