✔️ code
import re
def solution(new_id):
answer = list()
#1단계: 소문자 치환
new_id=new_id.lower()
#2단계: 특정 문제 제외 모든 문자 제거
symbols=['-', '_', '.']
new_string=re.sub(r"[^a-zA-Z0-9]","",new_id) #new_id에서 문자와 숫자만 남기기
for i in new_id:
if i not in symbols:
if i not in new_string:
new_id=new_id.replace(i, "")
#3단계: 마침표 2번 연속 하나로 치환
for i in range(len(new_id)):
if new_id[i]==".":
if i+1!=len(new_id) and new_id[i+1]==new_id[i]:
continue
answer.append(new_id[i])
#4단계: 마침표가 처음이나 끝에 위치하면 제거
if answer[0]==".":
if len(answer)>1:
answer=answer[1:]
if answer[-1]==".":
answer=answer[:-1]
#5단계: 빈 문자열일 때 a 대입
if len(answer)==0:
answer.append("a")
#6단계: 16자 이상이면 첫 15개 제외 나머지 제거
if len(answer)>=16:
answer=answer[:15]
if answer[-1]==".":
answer=answer[:-1]
#7단계: 2자 이하라면 마지막 문자를 길이가 3이 될 때까지 반복해서 끝에 붙인다.
if len(answer)<=2:
while len(answer)<3:
answer.append(answer[-1])
answer=''.join(map(str, answer))
return answer
>>>
리스트 연결을 어떻게 해야할지 머리를 굴려야 했던 코드이다.
단계별로 알고리즘을 해결하니 조금 수월했던 것 같다.
'알고리즘' 카테고리의 다른 글
[결정 알고리즘] 뮤직비디오 (0) | 2022.02.26 |
---|---|
[알고리즘] 프로그래머스 숫자 문자열과 영단어 (0) | 2022.02.24 |
[결정 알고리즘] 랜선자르기 (0) | 2022.02.22 |
[알고리즘] 격자판 회문수 (0) | 2022.02.19 |
[알고리즘] 스도쿠 (0) | 2022.02.19 |