알고리즘/프로그래머스

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

정석이 2022. 3. 14. 15:22

https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3 

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

 

 

문제

 

 

 


 

 

파이썬으로 다시 풀었다.

 

 

이 문제...음 각 언어 이해하기에 아주 좋은 문제인듯

 

 

 

def solution(new_id):
    # 1단계
    new_id = new_id.lower()
    
    # 2단계
    for i in new_id:
        if i.isalnum() or i == '-' or i == '_' or i == '.':
            continue
        else:
            new_id = new_id.replace(i, '')
    
    # 3단계 여기 참고했음
    while '..' in new_id:
        new_id = new_id.replace('..', '.')
    
    # 4단계
    if new_id.startswith('.'):
        new_id = new_id[1:]
    if new_id.endswith('.'):
        new_id = new_id[:len(new_id) - 1]
        
    # 5단계
    if new_id == '':
        new_id = 'a'
        
    # 6단계
    if len(new_id) >= 16:
        new_id = new_id[:15]
    if new_id.endswith('.'):
        new_id = new_id[:14]
    
    # 7단계
    if len(new_id) == 2:
        new_id = new_id + new_id[1]
    elif len(new_id) == 1:
        new_id = new_id + new_id[0] + new_id[0]
    
    return new_id

 

 

3단계인 중복 '.'을 제거해서 하나로 만드는 작업은 다른 사람꺼 참고했다.

 

 

생각이 정말 안나서ㅠㅠ 저 방법 아주 좋은듯....ㅎㅎ

 

 

 

이거는 남의 코드를 정말 잘 봐야지!

 

 


 

남의 코드

 

 

 

https://velog.io/@djagmlrhks3/Algorithm-Programmers-%EC%8B%A0%EA%B7%9C-%EC%95%84%EC%9D%B4%EB%94%94-%EC%B6%94%EC%B2%9C-by-Python

 

 

 

i == '-' or i == '_' or i == '.' 이렇게 푼걸

 

저렇게 그냥 in '-_.'으로 할 수 있구나 흑흑...

 

 

3단계는 이분꺼 참고했고 4, 5단계는 -- if -- else -- 이 문법을 사용하였다.

 

맨 뒤에꺼 없애는법 : answer[:-1] ㅇㅋㅇㅋ

 

 

마지막 7단계는 글자수가 3 이하면 맨 마지막 문제 * (3 - 문자열길이) 아주 좋다...

 

 

 

 

 

 

 

 

isalpha() 쓰면 알파벳인지 확인, isdigit() 쓰면 숫자인지, isalnum() 쓰면 알파벳,숫자인지 확인!

 

in '-_.'  또는  ['-', '_', '.']로 리스트화해서 써도 ㄱㅊ

 

 

 

 

 

 

 

정규식 진짜 싫다.....

 

내장 모듈 regex을 사용함

 

re.sub (정규 포현식, 대상 문자열, 치환 문자)

 

 

 

문자열이 ^의 뒤에 있는 문자로 시작되면 매치된다.

 

 

여러 개의 정규표현식들을 | 로 구분하면 or 의 의미가 적용되어 정규표현식들 중 어느 하나와 매치된다.

 

 

문자열이 $의 앞에 있는 문자로 끝나면 매치된다.

 

 

 

설명 굿 : https://nachwon.github.io/regular-expressions/