happyso
study with happyso
happyso
전체 방문자
오늘
어제
  • 분류 전체보기 (302)
    • GIT (3)
    • 컴퓨터 기본 개념 (29)
    • 알고리즘 (125)
      • 알고리즘 문제 (115)
      • 알고리즘 개념 (10)
    • Go (2)
    • 클라우드 (54)
      • DevOps (4)
      • Kubernetes(쿠버네티스) (33)
      • AWS (6)
      • CKA (8)
    • 리눅스(Linux) (18)
      • 컨테이너(Container) (8)
    • Front (22)
      • JavaScript (2)
      • React (20)
    • Python (21)
      • Python 웹 크롤링 (11)
      • Django (7)
      • MachineLearning (3)
    • 데이터베이스 (6)
      • MariaDB (2)
      • MongoDB (4)
    • C언어 (5)
    • Trouble Shooting (2)
    • 네트워크 (8)
      • CCNA (5)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Patch
  • replace
  • 18
  • edit
  • apply
  • kubernetes
  • 15

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
happyso

study with happyso

알고리즘/알고리즘 문제

[python] 프로그래머스 > 신규 아이디 추천

2021. 3. 4. 00:17

[문제]

programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

[풀이]

def solution(new_id):
    answer = []
    new_id = new_id.lower()
    for i in new_id:
        if i=='-' or i=='_' or i=='.' or i.isalnum():
            answer.append(i)

    try:
        while True:
            check = 0
            if answer[0]=='.':
                answer = answer[1:]
                check = 1
            if answer[-1]=='.':
                answer = answer[:-1]
                check = 1
            for a in range(len(answer)-1):
                if answer[a]=='.' and answer[a+1]=='.':
                    check = 1
                    answer = answer[:a]+answer[a+1:]
                    break
            if not check:
                break
    except:
        pass

    if len(answer)==0:
        answer = 'a'
    if len(answer)>15:
        answer = answer[:15]
        if answer[-1]=='.':
            answer = answer[:-1]
    if len(answer)<3:
        answer += answer[-1] * (3-len(answer))
    return ''.join(answer)

[다른 풀이]

def solution(new_id):
    answer = ''
    # 1
    new_id = new_id.lower()
    # 2
    for c in new_id:
        if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
            answer += c
    # 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

'알고리즘 > 알고리즘 문제' 카테고리의 다른 글

[python] 백준 > 나는야 포켓몬 마스터 이다솜(1620)  (0) 2021.03.04
[python] 백준 > BFS > 보물섬(2589)  (0) 2021.03.04
[python] 백준 > 이중 우선순위 큐(7662)  (0) 2021.03.03
[python] 백준 > DP > 1로 만들기(1463)  (0) 2021.03.02
[python] 백준 > DFS > 유기농 배추(1012)  (0) 2021.03.01
    '알고리즘/알고리즘 문제' 카테고리의 다른 글
    • [python] 백준 > 나는야 포켓몬 마스터 이다솜(1620)
    • [python] 백준 > BFS > 보물섬(2589)
    • [python] 백준 > 이중 우선순위 큐(7662)
    • [python] 백준 > DP > 1로 만들기(1463)
    happyso
    happyso

    티스토리툴바