소스 코드
def solution(new_id):
answer = ''
# 대문자 -> 소문자
temp = new_id[:].lower()
# 소문자, 숫자, -, _, . 제외한 모든 문자 제거
temp_answer = ''
for q in temp:
if (97 <= ord(q) <= 122) or (48 <= ord(q) <= 57) or (45 <= ord(q) <= 46) or ord(q) == 95:
temp_answer += q
# ... 치환
check = 0
for w in temp_answer:
if check == 0:
if w == '.':
check = 1
else:
answer += w
else:
if w != '.':
check = 0
answer += '.' + w
# . 처음 끝 제거
answer = answer.strip('.')
# 빈 문자열일 경우 a입력
if len(answer) == 0:
answer = 'a'
# 16자리 이상 :16까지만 출력, 마지막이 . 이면 . 제거
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer.rstrip('.')
# 2자 이하면, 마지막 문자 3이 될 때까지 반복
if len(answer) <= 2:
while True:
answer += answer[-1]
if len(answer) == 3:
break
return answer
해결 방법
1. 각 단계를 순서대로 코드로 작성하면 됨
2. strip을 활용하면 끝에 있는 글자 지우는게 수월함(str은 del, pop 등이 안먹음)
느낀 점
정규식을 사용하면 매우 깔끔하게 정리가 가능하더라...
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제풀이.프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩] 다트 게임 - PYTHON (0) | 2021.08.21 |
---|---|
[프로그래머스 코딩] 튜플 - PYTHON (0) | 2021.08.20 |
[프로그래머스 코딩] 키패드 누르기 - PYTHON (0) | 2021.07.28 |
[프로그래머스 코딩] 로또의 최고 순위와 최저 순위 - PYTHON (0) | 2021.07.27 |
[프로그래머스 코딩] 크레인 인형뽑기 게임 - PYTHON (0) | 2021.07.27 |