49. 신규 아이디 추천
코딩테스트 연습 > 2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천
https://programmers.co.kr/learn/courses/30/lessons/72410
Input value =
Process =
대문자 > 소문자
소문자,숫자,'-','_','.'을 제외한 모든 문자 제거
'..' 이상일 경우 '.'으로 치환
'.'이 처음이나 끝에 위치한다면 제거
빈 문자열일 경우 'a' 대입
길이가 16 이상일 경우 15까지 slicing
길이가 2 이하라면, 길이가 3이 될때까지 마지막 문자 반복
Output value =
id는 길이 1 이상 1,000 이하인 문자열입니다.
id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
id에 나타날 수 있는 특수문자는 -_.~!@#$%^&*()=+{]}:?,<>/ 로 한정됩니다.
#00
new_id = "...!@BaT#*..y.abcdefghijklm"
answer = ''
#01
new_id = new_id.lower()
#02
for w in new_id:
if w.isalnum() or w in '-_.':
answer+=w
#03
while '..' in answer:
answer = answer.replace('..','.')
#04
if answer[0] == '.' and len(answer) > 1:
answer = answer[1:]
if answer[-1] == '.':
answer = answer[:-1]
#05
if answer == '':
answer = 'a'
#06
if len(answer)>=16:
answer = answer[:15]
if answer[-1] == '.': # 길이를 줄였을 때 4단계 재적용 필요
answer = answer[:-1]
elif len(answer)<=3:
answer = answer+answer[-1]*(3-len(answer))
answer
def solution(new_id):
answer = ''
new_id = new_id.lower()
for w in new_id:
if w.isalnum() or w in '-_.':
answer+=w
while '..' in answer:
answer = answer.replace('..','.')
if answer[0] == '.' and len(answer) > 1:
answer = answer[1:]
if answer[-1] == '.':
answer = answer[:-1]
if answer == '':
answer = 'a'
if len(answer)>=16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
elif len(answer)<=3:
answer = answer+answer[-1]*(3-len(answer))
return answer
# Code test
new_id = "...!@BaT#*..y.abcdefghijklm"
solution(new_id)
총 49 문제의 프로그래머스 Level 1 포스팅이 끝났다...!