코딩테스트/🕊️프로그래머스
LEVEL 1. 신규 아이디 추천
@soohh
2022. 9. 30. 12:33
🟪 나의 구현 스케치
각 단계에 맞게 코드를 구현했다. 하지만 string out of range 오류가 발생했고 각 단계를 확인한 결과 4단계에서 빈 배열인 경우 범위를 벗어난다. 따라서 len(new_id) > 0 조건을 추가한다.
🟪 나의 구현 코드
def solution(new_id):
answer = ''
#1단계
new_id = new_id.lower()
#2단계
for str in new_id:
if str.isalpha() or str.isdigit():
continue
elif str in "-_.":
continue
else:
new_id = new_id.replace(str, "")
#3단계
while '..' in new_id:
new_id = new_id.replace("..", ".")
#4단계
if len(new_id) > 0 and new_id[0] == ".":
new_id = new_id[1:]
if len(new_id) > 0 and new_id[-1] == ".":
new_id = new_id[:-1]
#5단계
if not new_id:
new_id += "a"
#6단계
if len(new_id) >= 16:
new_id = new_id[0:15]
if new_id[-1] == ".":
new_id = new_id[0:14]
#7단계
while len(new_id) < 3:
new_id += new_id[-1]
return new_id
🟪 다른 사람의 구현 코드
정규식으로 구현하는 방법이다. 정규식 사용법을 알아두면 좋을 것 같다.
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
https://sooh-official.tistory.com/150
크롤링을 위한 지식
1. 자주 사용되는 파이썬 문자열 함수 정리 - count() : 문자열에 있는 특정 문자 갯수 세기 - index() : 문자열에 있는 특정 문자의 첫 위치를 알려줌, 없는 문자면 error 발생함 - find() : 문자열에 있는
sooh-official.tistory.com
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr