티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/72410

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1. 접근 방식

  • 문제에 나와 있는 단계대로 함수를 만들어 처리하자.

문제에서 규칙에 맞는 새 아이디를 추천하는 방법을 단계별로 설명해주었다. 따라서 각 단계에서 말하는 대로 아이디를 처리하면 된다. 별달리 고민할 필요 없이 하라는 대로 처리하면 되는 문제다.

 

 

2. 정답 코드

def step_1_2(data):
    s = ''
    for x in data.lower():
        if not x.isalpha() and not x.isdigit() and x not in ['-', '_', '.']:
            continue

        s += x
    return s

def step_3(data):
    s = data[0]

    if len(data) > 1:
        for x in data[1:]:
            if s[-1] == '.' and x == '.':
                continue

            s += x
    return s

def step_4(data):
    i = 1 if data[0] == '.' else 0
    j = len(data) - 1 if data[-1] == '.' else len(data)

    return data[i:j]

def step_5(data):
    if not data:
        data = 'a'

    return data

def step_6(data):
    if len(data) >= 16:
        data = data[:15]
        if data[-1] == '.':
            data = data[:-1]

    return data

def step_7(data):
    while len(data) < 3:
        data += data[-1]
    return data


def solution(new_id):
    new_id = step_1_2(new_id)
    new_id = step_3(new_id)
    new_id = step_4(new_id)
    new_id = step_5(new_id)
    new_id = step_6(new_id)
    new_id = step_7(new_id)

    return new_id
728x90