Level 1. 신규 아이디 추천
49. 신규 아이디 추천
코딩테스트 연습 > 2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천
https://programmers.co.kr/learn/courses/30/lessons/72410
문제 설명
Input value =
- new_id = 문자열
Process =
-
대문자 > 소문자
-
소문자,숫자,'-','_','.'을 제외한 모든 문자 제거
-
'..' 이상일 경우 '.'으로 치환
-
'.'이 처음이나 끝에 위치한다면 제거
-
빈 문자열일 경우 'a' 대입
-
길이가 16 이상일 경우 15까지 slicing
-
길이가 2 이하라면, 길이가 3이 될때까지 마지막 문자 반복
Output value =
- return 문자열
제한 사항
-
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)
마치며
- 6단계에서 글자 길이에 대해 slicing 할 때, slicing 된 값이 4단계의 요건을 충족하는 지 확인을 해야 한다.
프로그래머스 Level 1. 포스팅 종료
총 49 문제의 프로그래머스 Level 1 포스팅이 끝났다...!
Author And Source
이 문제에 관하여(Level 1. 신규 아이디 추천), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pear_min/Level-1.-신규-아이디-추천저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)