알고리즘 문제

https://school.programmers.co.kr/learn/courses/30/lessons/72410
신규아이디 추천

문제 설명+풀이방식

친절하게도 문제 자체에서 단계별로 가이드가 있었다.

  • 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
    ▶▶▶ lower()
  • 2단계 newid에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(), 마침표(.)를 제외한 모든 문자를 제거합니다.
    ▶▶▶ 1)for문으로 문자를 쪼갠후 2) 조건문으로 판별 3) replace() 로 제거
  • 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
    ▶▶▶ 1) ..이 존재한다면 반복문을 가동! while 2) ..을 .로 대체! replace()
  • 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
    ▶▶▶ 1) 조건문으로 판별 후 2) 슬라이싱으로 제거!
  • 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
    ▶▶▶ 1)조건문으로 판별 후 2)새로정의
  • 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
    ▶▶▶ 1)글자수 판별 2)15자리까지 슬라이싱
    만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
    ▶▶▶ 3)4단계와 동일
  • 7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
    ▶▶▶ 1) 글자수 판별 2)+로 마지막요소 반복추가
def solution(new_id):

    new_id = new_id.lower() #1단계
    
    alphabet = "abcdefghijklmnopqrstuvwxyz1234567890-_."
    
    for i in new_id: #2-1단계
      if not i in alphabet:#2-2단계
        new_id = new_id.replace(i,"") #2-3단계
        
    while ".." in new_id: #3-1단계
        new_id = new_id.replace("..",".") #3-2단계
    if new_id != "" and new_id[0] == ".": #4-1단계
      new_id = new_id[1:] #4-2단계
      
    if new_id != "" and new_id[-1] ==".": #4-1단계
      new_id = new_id[:-1] #4-2단계
      
    if new_id == "": #5-1단계
      new_id="a" #5-2단계
      
    if len(new_id) > 15: #6-1단계
      new_id = new_id[:15] #6-2단계
      
      if new_id[-1] ==".": 
        new_id = new_id[:-1] #6-3단계
        
    while len(new_id) < 3: #7-1단계
        new_id += new_id[-1] #7-2단계

    return new_id

유의할 점

7단계를 모두 거치기 전에 new_id가 ""이 되어도 오류가 나지 않도록 할 것!

profile
가보자고

0개의 댓글