[Py_Lv1] 신규 아이디 추천

Sunghun📈·2021년 10월 25일
0

프로그래머스

목록 보기
83/93
post-thumbnail

- 문제 설명

프로그래머스 문제 참고

- 제한 사항

  • new_id는 길이 1 이상 1,000 이하인 문자열입니다.
  • new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
  • newid에 나타날 수 있는 특수문자는 -.~!@#$%^&*()=+[{]}:?,<>/ 로 한정됩니다.

- 입출력 예

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.

1단계 변화 없습니다.
2단계 "z-+.^." → "z-.."
3단계 "z-.." → "z-."
4단계 "z-." → "z-"
5단계 변화 없습니다.
6단계 변화 없습니다.
7단계 "z-" → "z--"

입출력 예 #3
7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.

1단계 변화 없습니다.
2단계 "=.=" → "."
3단계 변화 없습니다.
4단계 "." → "" (new_id가 빈 문자열이 되었습니다.)
5단계 "" → "a"
6단계 변화 없습니다.
7단계 "a" → "aaa"

입출력 예 #4
1단계에서 7단계까지 거치는 동안 newid("123.def")는 변하지 않습니다. 즉, new_id가 처음부터 카카오의 아이디 규칙에 맞습니다.

입출력 예 #5
1단계 변화 없습니다.
2단계 변화 없습니다.
3단계 변화 없습니다.
4단계 변화 없습니다.
5단계 변화 없습니다.
6단계 "abcdefghijklmn.p" → "abcdefghijklmn." → "abcdefghijklmn"
7단계 변화 없습니다.

- 접근법

단순 구현문제였으나 자칫 어렵게 문제를 풀어나갈 수도 있었다.

'..' -> '.'으로 변경하는 과정이나

단어가 '.'하나만 들어있는 경우 처리하는 방법 등

몇번의 실패를 겪었지만 그래도 구현하는데 어려운 알고리즘 기법이나
함수를 사용하지는 않았다.

이 문제를 끝으로 프로그래머스 레벨 1을 모두 풀었다.

처음 문제를 풀기 시작할때보다 훨씬 나아졌지만,
아직 이정도가 레벨 1이라고? 생각했던 문제들도 많았다.

레벨 2 문제를 풀면서 파이썬 갑게 풀어보는게 목표이다.


def solution(new_id):
    answer =''
    # 1, 2
    for i in new_id.lower():
        if i in ("-", "_", ".") or i.isdigit() or i.isalpha():
            answer += i
    # 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    
    # 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    # 5
    if answer=='':
        answer+='a'
    # 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7 
    while len(answer) < 3:
        answer += answer[-1]
        
    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글