[알고리즘] 프로그래머스 신규 아이디 추천

2022. 2. 24. 22:42· 알고리즘

✔️ code

 

import re

def solution(new_id):
    answer = list()
    
    #1단계: 소문자 치환
    new_id=new_id.lower()
    #2단계: 특정 문제 제외 모든 문자 제거
    symbols=['-', '_', '.']
    new_string=re.sub(r"[^a-zA-Z0-9]","",new_id) #new_id에서 문자와 숫자만 남기기
    
    for i in new_id:
        if i not in symbols:
            if i not in new_string:
                new_id=new_id.replace(i, "")
    #3단계: 마침표 2번 연속 하나로 치환
    for i in range(len(new_id)):
        
        if new_id[i]==".":
            if i+1!=len(new_id) and new_id[i+1]==new_id[i]:
                continue
        answer.append(new_id[i])
    #4단계: 마침표가 처음이나 끝에 위치하면 제거
    if answer[0]==".":
        if len(answer)>1:
            answer=answer[1:]
    if answer[-1]==".":
        answer=answer[:-1]
    #5단계: 빈 문자열일 때 a 대입
    if len(answer)==0:
        answer.append("a")
    #6단계: 16자 이상이면 첫 15개 제외 나머지 제거
    if len(answer)>=16:
        answer=answer[:15]
        if answer[-1]==".":
            answer=answer[:-1]
    #7단계: 2자 이하라면 마지막 문자를 길이가 3이 될 때까지 반복해서 끝에 붙인다.
    if len(answer)<=2:
        while len(answer)<3:
            answer.append(answer[-1])
    answer=''.join(map(str, answer))   
    return answer

 

>>>

 

리스트 연결을 어떻게 해야할지 머리를 굴려야 했던 코드이다.

단계별로 알고리즘을 해결하니 조금 수월했던 것 같다.

'알고리즘' 카테고리의 다른 글

[결정 알고리즘] 뮤직비디오  (0) 2022.02.26
[알고리즘] 프로그래머스 숫자 문자열과 영단어  (0) 2022.02.24
[결정 알고리즘] 랜선자르기  (0) 2022.02.22
[알고리즘] 격자판 회문수  (0) 2022.02.19
[알고리즘] 스도쿠  (0) 2022.02.19
'알고리즘' 카테고리의 다른 글
  • [결정 알고리즘] 뮤직비디오
  • [알고리즘] 프로그래머스 숫자 문자열과 영단어
  • [결정 알고리즘] 랜선자르기
  • [알고리즘] 격자판 회문수
오승미
오승미
오승미
프로그래밍 공부
오승미
전체
오늘
어제
  • 분류 전체보기 (114)
    • 개발 (31)
      • 배포 (2)
      • KAFKA (3)
      • MSA (11)
      • 리눅스 (2)
      • Spring (1)
      • FE (0)
    • SQL (6)
    • 알고리즘 (50)
    • JAVA (14)
    • 개발 서적 리뷰 (1)
      • Clean Code (1)
      • 실전 카프카 개발부터 운영까지 (0)
    • CS (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
오승미
[알고리즘] 프로그래머스 신규 아이디 추천
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.