Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 동
- 프로그래머스 #c++ #코딩테스트
- 백준 #이거다시풀기
- 백준 #백준알고리즘 #알고리즘 #코딩테스트 #코딩테스트준비 #코테준비 #백준2110 #python #문제풀이
- 프로그래머스 #python #코딩테스트 #코테공부 #알고리즘 #dict
- 프로그래머스 #네트워크 #c++ #코딩테스트 #코테 #코테준비 #dfs
- 프로그래머스 #sql #mysql #코딩테스트
- 백준 #백준2217 #백준로프 #python
- 카카오 #프로그래머스 #python #코딩테스트 #오픈채팅방
- 프로그래머스 #NULL 처리하기
- 프로그래머스 #python #2021카카오 #카카오코테 #카카오인턴쉽
- 그리디알고리즘 #그리디 #백준 #우선순위큐 #최소힙 #최대힙 #알고리즘 #코딩테스트 #python
- 카카오 코테
Archives
- Today
- Total
say repository
[프로그래머스] 신규 아이디 추천 python 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/72410
출처 : 프로그래머스
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
def solution(new_id):
answer = ''
# 1단계 모든 대문자를 소문자로
new_id = new_id.lower()
id_must = ['-','_','.']
# 2단계 알파벳 소문자, 숫자, 필요한 기호 빼고 삭제
for i in new_id:
if i in id_must or i.isalpha() or i.isdigit():
answer += i
# 3단계 연속된 . 하나의 .로
cnt = 0
for i in answer:
if i == id_must[2]:
cnt += 1
if cnt == 2:
answer = answer.replace("..", ".")
cnt = 0
# 4단계 .가 처음이나 마지막이면 제거
if answer[0] == id_must[2]: # 처음
if len(answer)>1: # 지울게 있어야 지움
answer = answer[1:]
else:
answer = '.'
if answer[-1] == id_must[2]: # 마지막
answer = answer[:-1]
# 5단계 빈 문자열이라면 a삽입
if answer == "":
answer += 'a'
# 6단계 아이디 길이가 16자리 이상이면, 첫 15개 제외한 나머지 문자 제거
if len(answer) >= 16:
answer = answer.replace(answer[15:],"")
if answer[-1] == id_must[2]: # 제거 후 마지막에 .이 있다면 제거
answer = answer[:-1]
# 7단계 아이디 길이가 2자 이하면 마지막 문자를 길이가 3될 떄까지 반복
while len(answer) < 3:
answer += answer[-1]
# print(answer)
return answer
풀이
문자열 단계별 구현만 해주면 된다.
참고로 3단계는 이렇게 while 문으로도 가능하다.
while '..' in answer:
answer = answer.replace('..', '.')
정규식으로 푸는 방법도 존재한다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 python (0) | 2022.03.22 |
---|---|
[프로그래머스] 키패드 누르기 python (0) | 2022.03.22 |
[프로그래머스] 숫자 문자열과 영단어 python (0) | 2022.03.22 |
[프로그래머스] 로또의 최고 순위와 최저 순위 python (0) | 2022.03.22 |
[프로그래머스] 신고 결과 받기 python (0) | 2022.03.21 |