[PRO] 신규 아이디 추천(2021 KAKAO BLIND RECRUITMENT)

천호영·2022년 4월 29일
0

알고리즘

목록 보기
33/100
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/72410
(2021 KAKAO BLIND RECRUITMENT)

문제에서 구현하라는대로 구현하면 되는 문제이다.

def solution(new_id):
    # 1단계
    new_id = new_id.lower()
    
    # 2단계
    new_id = ''.join([char for char in new_id if char.isalnum() or char in "-_."])
    
    # 3단계 (cf. PRO 같은숫자는 싫어 문제)
    temp_id=""
    for char in new_id:
        if char=="." and temp_id and temp_id[-1] == ".":
            continue
        temp_id+=char
    new_id = temp_id
    
    # 4단계
    if new_id and new_id[0]==".":
        new_id = new_id[1:]
    if new_id and new_id[-1]==".":
        new_id = new_id[:-1]
    
    # 5단계
    if not new_id:
        new_id = "a"
        
    # 6단계
    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[-1]==".":
            new_id = new_id[:-1]
    
    # 7단계
    while len(new_id) < 3:
        new_id+=new_id[-1]
    
    
    return new_id

이때 개선 가능한 부분은 3단계를 다음과 같이 하는 것이다. while문을 돌며 '..'을 '.'으로 바꾸는 작업을 반복한다.

while '..' in answer:
	answer = answer.replace('..', '.')

정리

  • 쉽게 판별하는 String method(공식문서)

    다음 3가지 모두 빈문자열에 대해서는 False 반환

    • str.isdigit(): 문자열 내의 모든 문자가 숫자이면 True 반환
    • str.isalpha(): 문자열 내의 모든 문자가 알파벳이면 True 반환
    • str.isalnum(): 문자열 내의 모든 문자가 알파벳과 숫자이면 True 반환
profile
성장!

0개의 댓글