프로그래머스 사이트에 수록되어있는 2021 카카오 블라인드 테스트 문제입니다.
python의 문자열 활용문제로 해당 문법을 사용하여 풀었습니다.
lower:소문자로 변환
replace(a,b):a를 b로 변환
rstrip(a),lstrip(a):문자열 오른쪽 or 왼쪽 a삭제
str[처음:끝]: 문자열의 처음index~(끝-1)index까지의 문자열
len(str):문자열길이
str[-1]:문자열의 마지막문자
def solution(new_id):
answer = ""
new_id = new_id.lower()
for i in new_id:
if '-' in i or '_' in i or '.' in i or i.isalpha() or i.isdigit():
continue
else:
new_id = new_id.replace(i, "")
while ".." in new_id:
new_id = new_id.replace('..', '.')
new_id = new_id.rstrip('.')
new_id = new_id.lstrip('.')
if new_id == "":
new_id = "a"
if len(new_id) > 15:
new_id = new_id[0:15]
if new_id[14] == '.':
new_id = new_id.rstrip('.')
while len(new_id) < 3:
print(new_id)
new_id += new_id[-1]
answer = new_id
return answer
정규식으로 푼거 프로그래머스 잘푸시는분꺼 참고했어요
import re
def solution(new_id):
answer = ""
new_id = new_id.lower()
# re.sub(pattern, '바꿀문자', '해당하는 문자열')
# [^a-z0-9\-_.]: [a-z0-9]:범위에 해당하는거 , \-_.: 해당문자
new_id = re.sub('[^a-z0-9\-_.]','',new_id)
# \.+: .하나이상
new_id = re.sub('\.+','.',new_id)
# ^[.]:문자처음 ,[.]$:문자끝
new_id = re.sub('^[.][.]$','',new_id)
# [:15]: [0:15]와 동일
new_id = 'a' if len(new_id) == 0 else new_id[:15]
new_id = re.sub('^[.][.]$','',new_id)
# .join:문자열 합치기, new_id[-1]: 마지막문자
new_id = new_id if len(new_id) > 2 else new_id + "".join([new_id[-1] for i in range(3-len(new_id))])
answer = new_id
return answer