728x90
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
- 코드
def solution(new_id):
answer = ''
# 1. 모두 소문자
new_id = new_id.lower()
# 2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)만 허용
no = new_id.maketrans('~!@#$%^&*()=+[{]}:?,<>/',' ')
new_id = new_id.translate(no).replace(' ','')
# 3. 마침표(.)가 2번 이상 연속된 부분 하나의 마침표로 치환
i = 0
while i < len(new_id)-1:
if new_id[i] == '.' and new_id[i+1] == '.':
new_id = new_id[0:i+1]+new_id[i+2:]
else:
i += 1
# 4. 처음이나 끝에 마침표(.) 있다면 제거
new_id = new_id.strip('.')
# 5. 빈 문자열이면, 'a'
if new_id == '':
new_id = 'a'
# 6. 길이가 16 이상이면, 첫 15개 문자만 쓰기, 맨 뒤 마침표인지 확인
if len(new_id) >= 16:
new_id = new_id[0:15].strip('.')
# 7. 길이가 2 이하, 길이가 3이 될 때까지 마지막 문자 추가를 반복
if len(new_id) <= 2:
while len(new_id) < 3:
new_id += new_id[-1]
answer = new_id
return answer
print(solution("......a......a......a....."))
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 2178. 미로탐색 -Python (0) | 2022.05.30 |
---|---|
[프로그래머스] Lv.1 신고 결과 받기 - Python (0) | 2022.05.29 |
[프로그래머스] Lv.1 실패율 - Python (0) | 2022.05.21 |
[프로그래머스] Lv.2 문자열 압축 - Python (0) | 2022.05.12 |
알고리즘 - 플로이드 (0) | 2022.05.05 |
댓글