python 신규아이디 추천

quokka·2021년 3월 6일
0

코딩테스트

목록 보기
4/63

프로그래머스 사이트에 수록되어있는 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
profile
iOS를 공부하는 개발자입니다~ㅎㅎ

0개의 댓글

관련 채용 정보