728x90
반응형
문제 출처 :
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
문제 풀이 :
- 2021 년도 카카오 블라인드 코딩테스트에 1번으로 나온 문제이다. 카카오는 보통 3번까지는 무난하게 내고 순서대로 난이도 순서이니 1번은 매우 쉽게 나와있다.
- 그냥 문제에서 친절하게 설명해준대로 구현을 하면된다.
- 특히나 파이썬의 경우 소문자로 치환하는 것들은 .lower()와 같은 유용한 함수들 덕분에 더 편하다.
- 그나마 구현에서 조금 거슬리는 부분은 2번 이상 마침표(.)가 있는 경우에는 마침표(.) 하나만 해야하는데 이거는 따로 변수를 만들어서 관리하였다.
def solution(new_id):
answer = ''
#step 1
new_id = new_id.lower()
alphabet_low = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
special_str = ['.','-','_']
num = ['1','2','3','4','5','6','7','8','9','0']
#step2
check_double_comma = 0
new_id_2 =""
for i in new_id:
if(i in alphabet_low or i in num):
new_id_2 += i
check_double_comma=0
if(i in special_str):
#step3
if(i=='.'):
if(check_double_comma==0):
new_id_2+=i
check_double_comma=1
else:
new_id_2+=i
check_double_comma=0
new_id = new_id_2
#step4
try:
if(new_id[0]=='.'):
new_id = new_id[1:]
if(new_id[-1]=='.'):
new_id = new_id[:-1]
except:
pass
#step5
if(len(new_id)==0):
new_id+='a'
#step6
if(len(new_id)>=16):
new_id = new_id[:15]
if(new_id[-1]=='.'):
new_id = new_id[:-1]
#step
if(len(new_id)<=2):
last_str = new_id[-1]
while(len(new_id)!=3):
new_id+=last_str
answer = new_id
return answer
반응형
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 14889 - 스타트와 링크 (Python) (0) | 2021.07.11 |
---|---|
[프로그래머스] 메뉴 리뉴얼 (Level2) (Python) (1) | 2021.07.03 |
[백준] 14499 - 주사위 굴리기 (Python) (0) | 2021.07.03 |
[백준] 13458 - 시험 감독 (Python) (0) | 2021.07.03 |
[백준] 3190 - 뱀 (Python) (0) | 2021.07.03 |