개발/PS
프로그래머스 Lv1 신규 아이디 추천 (파이썬)
유훈 | Yuhun
2021. 12. 30. 16:24
반응형
풀이
def solution(new_id):
answer = ''
# 1
answer = new_id.lower()
temp = ''
# 2
for i in answer:
if i.isdigit() or i.isalpha() or i == '-' or i == '_' or i == '.':
temp = temp + i
else:
pass
answer = temp
# 3
answer = answer.replace('..', '.')
# 4
while True:
if len(answer) > 0:
if answer[0] == '.':
answer = answer[1:]
elif answer[-1] == '.':
answer = answer[:-1]
else:
break
else:
break
# 5
if answer == '':
answer = 'a'
# 6
if len(answer) >= 16:
answer = answer[0:15]
while True:
if answer[-1] == '.':
answer = answer[0:-1]
else:
break
# 7
while True:
if len(answer) <= 2:
answer = answer + answer[-1]
else:
break
return answer
print(solution('...!@BaT#*..y.abcdefghijklm'))
print(solution('z-+.^.'))
print(solution( "=.="))
print(solution("123_.def"))
print(solution("abcdefghijklmn.p"))
저는 1단계 푼 것 중에서 이게 가장 어려웠던 것 같아요.
사실 다른 조건은 그래도 할만한데 저는 2번 조건이 가장 어려웠어요.
어떻게 구분지을까 검색하다가 is*()함수들이 종류가 엄청 많더라구요. 그 중 두가지를 이용했어요.
#1 . lower()로 소문자로 바꾸기
#2. isalpha(), isdigit()와 다른 조건을 or로 연결해 사용
#3. replace() 사용
=> replace()는 자주 사용되고 편리하니 알아두시면 좋을것 같아요!
#4. 앞 뒤를 체크하고 [ : ]를 이용해 slicing해주었어요.
#5. 빈 문자열 체크!
#6. 길이 제한과 마지막 문자열 체크
#7. 너무 짧은지 체크하고 늘려주기
반응형