[프로그래머스] 신규 아이디 추천

박신희·2022년 4월 21일
0

[풀이] 프로그래머스

목록 보기
16/33
post-thumbnail

❗ 풀이 과정

  • 각 단계 (1~7단계)에 대해서 직관적으로 코드를 짜면 해결할 수 있다.

🤜 풀이 코드

def solution(new_id):
    answer = ''
    
    # 1단계 : 대문자 -> 소문자
    new_id=new_id.lower()

    
    # ** 2단계 : 알파벳 소문자, 숫자, -, _, . 를 제외한 모든 문자 제거
    tmp=''
    for i in new_id:
        if i in '._-' or i.isdigit() or i.islower():
            tmp+=i
        else:
            continue
    new_id=tmp

    # ** 3단계 : '.'가 2번 이상 연속된 부분을 하나의 마침표로 치환
    while '..' in new_id:
        new_id=new_id.replace('..','.')
    
    # 4단계 : '.'가 처음이나 끝에 위치한다면 제거
	if new_id[0]=='.':
        new_id=new_id[1:] 
        
    if len(new_id)>1 and new_id[-1]=='.':
        new_id=new_id[:-1]

    # 5단계 : 빈 문자열이라면 a를 대입
    if len(new_id)==0:
        new_id='a'
        
    # 6단계 : 길이가 16자 이상이라면 0~14개 문자만 남기기
    if len(new_id)>=16:
        new_id=new_id[:15]
        if new_id[-1]=='.':
            new_id=new_id[:-1]
    
    # 7단계 : 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
    if len(new_id)<=2:
        while len(new_id)<=2:
            new_id+=new_id[-1]
            
    return new_id

🤷‍♀️ 코드 리뷰

  • 2단계하고 3단계는 어떻게 구현할지 모르겠어서 결국 구글의 힘을 빌렸다.
  • 2단계는 re 라이브러리를 사용해서 하면 쉬울 것 같은데,, 결국 사용하지 못하고 for문으로 해결
  • 4단계는 처음에 위치한 . 을 제거했을 때, 문자열이 없어진 경우 를 고려해야한다. 고려하지 않는다면 index error가 난다.
profile
log my moments 'u')/

0개의 댓글