신규 아이디 추천 - Python
Code
chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-', '_', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
string = []
for cha in new_id:
if cha in chars:
string.append(cha)
# 3단계
for i in range(1, len(string)):
if string[i] == string[i-1]:
string.pop(i)
# 4단계
while True:
if string:
if string[0] == '.':
string.pop(0)
continue
if string[-1] == '.':
string.pop()
continue
break
# 5단계
if not string:
string.append('a')
# 6단계
if len(string) > 15:
string = string[:15]
while True:
if string[-1] == '.':
string.pop()
continue
break
# 7단계
while len(string) < 3:
string.append(string[-1])
return "".join(string)
애로사항
chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-', '_', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
string = []
for cha in new_id:
if cha in chars:
string.append(cha)
# 3단계
for i in range(1, len(string)):
if string[i] == string[i-1]:
string.pop(i)
# 4단계
while True:
if string:
if string[0] == '.':
string.pop(0)
continue
if string[-1] == '.':
string.pop()
continue
break
# 5단계
if not string:
string.append('a')
# 6단계
if len(string) > 15:
string = string[:15]
while True:
if string[-1] == '.':
string.pop()
continue
break
# 7단계
while len(string) < 3:
string.append(string[-1])
return "".join(string)
chars라는 list를 만드는 것은 원래 구린 풀이 방식이지만..
실전에서 괜히 아스키 문자로 바꿔즈는 ord() 같은거 기억안나면 저렇게 풀어도 괜찮은 수준의 문제였다.
for 문도 어떻게든 많이 줄여서 풀 수 있는 문제였지만 어차피 문자열의 길이가 15밖에 안돼서 그냥 for문 많이 집어넣었다.
처음에는 문자열로 접근하려 했는데 그냥 list로 접근하는게 더 다루기 쉬워서 갈아탔다.
1~7 단계 순서 안지키고 했다가 털려서 순서 지키는 방향으로 바꿨다.
3단계는 index 오류가 뜨기 가장 쉬운 부분이었다.
Author And Source
이 문제에 관하여(신규 아이디 추천 - Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hanqpark/신규-아이디-추천-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)