반응형
풀이
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. 너무 짧은지 체크하고 늘려주기
반응형
'개발 > PS' 카테고리의 다른 글
프로그래머스 Lv1 크레인 인형뽑기 게임 (파이썬) (0) | 2021.12.30 |
---|---|
프로그래머스 Lv1 숫자 문자열과 영단어(파이썬) (0) | 2021.12.30 |
프로그래머스 Lv1 로또의 최고 순위와 최저 순위 (파이썬) (0) | 2021.12.30 |
프로그래머스 Lv1 없는 숫자 더하기 (파이썬) (0) | 2021.12.30 |
프로그래머스 Lv2 문자열 압축 (파이썬) + 예외 처리 (0) | 2021.12.30 |