Agorithm/프로그래머스
프로그래머스 Level 1 신규 아이디 추천
kimjinho1
2022. 6. 21. 22:20
728x90
반응형
간단한 구현 문제이다. 문제에서 정해준 순서대로 입력 문자열을 처리해주면 된다.
첫 번째 풀이
리스트 사용
def solution(new_id):
# 1
new_id = new_id.lower()
# 2
li = [c for c in new_id if c.isalnum() or c in "-_."]
# 3
i = 0
while i < len(li)-1:
if li[i] == li[i+1] == '.':
li.pop(i)
else:
i += 1
# 4
if li and li[0] == '.':
li.pop(0)
if li and li[-1] == '.':
li.pop()
# 5
if li == []:
li.append('a')
# 6
if len(li) >= 16:
li = li[:15]
if li[-1] == '.':
li.pop()
# 7
if len(li) <= 2:
while len(li) < 3:
li.append(li[-1])
answer = ''.join(li)
return answer
두 번째 풀이
리스트를 생성할 필요가 있을까 싶어서 문자열로도 풀어봤다.
def solution(new_id):
ans = ""
# 1
new_id = new_id.lower()
# 2
for c in new_id:
if c.isalnum() or c in "-_.":
ans += c
# 3
while ".." in ans:
ans = ans.replace("..", '.')
# 4
if ans and ans[0] == '.':
ans = ans[1:]
if ans and ans[-1] == '.':
ans = ans[:-1]
# 5
if ans == '':
ans = 'a'
# 6
if len(ans) >= 16:
ans = ans[:15]
if ans[-1] == '.':
ans = ans[:-1]
# 7
while len(ans) < 3:
ans += ans[-1]
return ans
728x90
반응형