문제 설명
https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
문제 풀이
from collections import deque
def first_second(new_id_lst):
temp = []
symbol = ['.','_','-']
i = 0
while new_id_lst:
word = new_id_lst.popleft()
if word.isalpha():
temp.append(word.lower())
elif 48 <= ord(word) and ord(word) <= 57:
temp.append(word)
elif word in symbol:
temp.append(word)
i += 1
return deque(temp)
def third_forth(new_id_lst):
pre, i = 0, 0
temp = []
while new_id_lst:
word = new_id_lst.popleft()
if i == 0 and word =='.':
continue
if pre == word and word == '.':
pre = word
continue
else:
temp.append(word)
i += 1
pre = word
if temp:
if temp[-1] == '.':
temp.pop()
return temp
def fifth_sixth_seventh(new_id_lst):
if len(new_id_lst) >= 16:
new_id_lst = new_id_lst[:15]
state = True
while state:
if new_id_lst[-1] == '.':
new_id_lst.pop()
else:
state = False
elif len(new_id_lst) == 0:
new_id_lst.append('aaa')
elif len(new_id_lst) <= 2:
while len(new_id_lst) <3:
new_id_lst.append(new_id_lst[-1])
return "".join(new_id_lst)
def solution(new_id):
answer = ''
new_id_lst = deque(new_id)
new_id_lst = first_second(new_id_lst)
if new_id_lst:
new_id_lst = third_forth(new_id_lst)
return fifth_sixth_seventh(new_id_lst)
'Study > 코딩테스트' 카테고리의 다른 글
[ 프로그래머스 / 2019 KAKAO BLIND RECRUITMENT / Python] 오픈채팅방 (0) | 2022.03.24 |
---|---|
[ 프로그래머스 / 2021 KAKAO BLIND RECRUITMENT / Python ] 메뉴 리뉴얼 (0) | 2022.03.20 |
[ 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / Python ] 행렬 테두리 회전하기 (0) | 2022.02.21 |
[ 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / Python ] 로또의 최고 순위와 최저 순위 (0) | 2022.02.21 |
[ 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / Python ] 다단계 칫솔 판매 (0) | 2022.02.21 |