[프로그래머스] Level 1, 신규 아이디 추천 (Python)

2021. 8. 5. 15:59·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3 

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

코드

def solution(new_id):
    answer = 0
    # 1
    new_id = new_id.lower()
    new_id_list = list(new_id)
    #print(ord('.')) # a~z : 97 ~ 122
                    # 0~9 : 48 ~ 57, - : 45, _ : 95, . : 46
    delete = []
    # 2
    for i in range(len(new_id_list)):
        if 97 <= ord(new_id_list[i]) <= 122 or 48 <= ord(new_id_list[i]) <= 57 or 45 <= ord(new_id_list[i]) <= 46 or ord(new_id_list[i]) == 95:
            continue
        else:
            delete.append(new_id_list[i])
    
    for i in delete:
        new_id_list.remove(i)
    
    # 3
    comma = []
    leng = len(new_id_list)
    for i in range(leng-1):
        count = 1
        if new_id_list[i] == '.':
            if new_id_list[i+1] == '.':
                comma.append(i)
    print(comma)
    cnt = 0
    for i in comma:
        new_id_list.pop(i-cnt)
        cnt += 1
    
    # 4
    if new_id_list[0] == '.':
        new_id_list.pop(0)
    if len(new_id_list) == 0:
        new_id_list.append('a')
    if new_id_list[-1] == '.':
        new_id_list.pop()
    # 5    
    if len(new_id_list) == 0:
        new_id_list.append('a')
        
    # 6
    if len(new_id_list) >= 16:
        new_id_list = new_id_list[0:15]
    if new_id_list[-1] == '.':
        new_id_list.pop(-1)
        
    # 7
    while len(new_id_list) <= 2:
        new_id_list.append(new_id_list[-1])
        
    return "".join(new_id_list)

파이썬 리스트 인덱스로 요소 삭제시 for문 돌면서 바로 삭제하면 인덱스 에러가 뜸

새로 리스트 만들어서 인덱스 저장후 따로 for문 돌려서 삭제

인덱스 삭제시 기존 삭제하려는 인덱스와 달라질 수 있으므로 변수 cnt 추가하여 인덱스 제어해줬다.

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level3, 합승 택시 요금 (Python)  (0) 2021.08.10
[프로그래머스] Level 2, 메뉴 리뉴얼 (Python)  (0) 2021.08.05
[프로그래머스] Level3, 가장 먼 노드 (Python)  (0) 2021.07.26
[프로그래머스] Level3, 네트워크 (Python)  (0) 2021.07.14
[프로그래머스] Level2, 방문길이(Python)  (0) 2021.06.28
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level3, 합승 택시 요금 (Python)
  • [프로그래머스] Level 2, 메뉴 리뉴얼 (Python)
  • [프로그래머스] Level3, 가장 먼 노드 (Python)
  • [프로그래머스] Level3, 네트워크 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jpa
    카카오코딩테스트
    항해99
    에러
    버그
    괄호
    실전프로젝트
    인프런
    미니프로젝트
    프로그래머스
    SFlash
    spring
    항해마켓
    SpringBoot
    회고
    그리디
    백준
    orm
    java
    스파르타코딩클럽
    김영한
    알고리즘
    브루트포스
    코딩테스트
    해결
    후기
    조합
    파이썬
    카카오인턴
    정리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level 1, 신규 아이디 추천 (Python)
상단으로

티스토리툴바