프로그래머스. 2021 KAKAO BLIND RECRUITMENT. Level 1. 신규 아이디 추천 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/72410
카카오의 노가다 문제
정규식을 이용하면 이 긴 코드를 극도로 줄일 수 있다
def solution(new_id):
answer = ''
new_id = new_id.lower() # 1단계
new_id = list(new_id)
temp = []
# 2단계
print("2단계")
for i in range(len(new_id)):
if new_id[i].isalpha() or new_id[i].isdigit() or new_id[i] == '-' or new_id[i] == '_' or new_id[i] == '.':
temp.append(new_id[i])
else:
print(i, ": not")
new_id = temp
print("".join(new_id))
# 3단계
print("3단계")
for i in range(len(new_id)-1):
if new_id[i] == new_id[i+1] == '.':
new_id[i] = ' '
new_id = ' '.join(new_id).split()
print("".join(new_id))
# 4단계
print("4단계")
if new_id and new_id[0] == '.':
new_id.pop(0)
if new_id and new_id[-1] == '.':
new_id.pop(-1)
print("".join(new_id))
# 5단계
print("5단계")
if not new_id:
new_id.append("a")
print("".join(new_id))
# 6단계
print("6단계")
if len(new_id) > 15:
new_id = new_id[:15]
if new_id and new_id[0] == '.':
new_id.pop(0)
if new_id and new_id[-1] == '.':
new_id.pop(-1)
print("".join(new_id))
# 7단계
print("7단계")
if len(new_id) < 3:
while len(new_id) != 3:
new_id.append(new_id[-1])
print("".join(new_id))
return "".join(new_id)