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 |
Tags
- 직원 이직률
- 브라이틱스
- 혼공학습단
- 포스코 아카데미
- Brightics Studio
- 삼성SDS
- 추천시스템
- 삼성SDS Brigthics
- Brigthics를 이용한 분석
- 데이터분석
- Brightics
- 브라이틱스 서포터즈
- Brigthics
- 모델링
- 혼공머신
- 포스코 청년
- 영상제작기
- 팀 분석
- 직원 이직여부
- 캐글
- 혼공
- 삼성SDS Brightics
- 혼공머신러닝딥러닝
- Brightics를 이용한 분석
- 삼성 SDS
- 노코드AI
- Brigthics Studio
- 개인 의료비 예측
- 삼성 SDS Brigthics
- 데이터 분석
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 1_신규 아이디 추천 본문
문제 유형
2021 KAKAO BLIND RECRUITMENT
문제
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
나의 문제풀이
- 문제점
- 4번(처음/끝 . 제거)에서 answer가 비어있을 때를 고려하지 않음
- 사용가능한 특수문자 꼭 확인하기(, 비어있었음)
def solution(new_id):
answer = ''
no_id = ['~','!','@','#','$','%','^','&','*','(',')','=','+','[','{','}',']',':','?','<','>','/',',']
# 1_소문자 변경
new_id = new_id.lower()
# 2_필요없는 문자 삭제
for letter in no_id:
if letter in new_id:
new_id = new_id.replace(letter,'')
# 3_.2번 이상일 때 삭제
answer += new_id[0]
for i in range(1,len(new_id)):
if answer[len(answer) - 1] == '.' and new_id[i] == '.':
continue
else:
answer += new_id[i]
# 4_.처음/끝 제거
if answer != '':
if answer[0] == '.':
answer = answer[1:]
if answer != '':
if answer[len(answer) - 1] == '.':
answer = answer[:-1]
# 5_비었을 때 'a' 채워넣기
if answer == '':
answer += 'a'
# 6_16자 이상인 경우 1~15자만 남기고 삭제!
if len(answer) > 15:
answer = answer[:15]
if answer[len(answer) - 1] == '.':
answer = answer[:-1]
# 7_길이 2이하, 마지막 문자 3이상까지 반복
if len(answer) < 3:
while True:
answer += answer[len(answer) - 1]
if len(answer) == 3:
break
return answer
다른 사람의 풀이
1) 정규표현식 이용하기
- re.sub(바꿀 문자, 바꿔질 문자, 저장 위치)
- [] : [] 사이의 문자들과 매치
- ^ : 반대(not)의 의미
- $ : 문자열의 끝
https://ponyozzang.tistory.com/335
Python 정규 표현식(re.sub)을 이용한 문자열 치환 방법 및 예제
파이썬에서 문자열을 치환해주는 메서드로 replace가 있습니다. 이번에는 replace 메서드로 문자열을 치환하는 방법이 아닌 정규 표현식을 이용하여 문자열을 치환해보도록 하겠습니다. 정규 표현
ponyozzang.tistory.com
정규표현식 (regex)
정규 표현식 정규표현식(regular expression)은 일종의 문자를 표현하는 공식으로, 특정 규칙이 있는 문자열 집합을 추출할 때 자주 사용되는 기법입니다. 주로 Prograaming Language나 Text Editor…
sooftware.io
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에 없을 때 'a'추가, 나머지 경우 15번째 까지
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))]) # join 이용해서 같은 문자 반복
return st
2) str함수 사용
- str 함수
- isalpha() : 문자열로만 이루어져 있는지 확인하는 함수
- isdigit() : 숫자로만 이루어져 있는지 확인하는 함수
def solution(new_id):
answer = ''
# 1
new_id = new_id.lower()
# 2
for c in new_id:
if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
answer += c
# 3
while '..' in answer:
answer = answer.replace('..', '.')
# 4
if answer[0] == '.':
answer = answer[1:] if len(answer) > 1 else '.'
if answer[-1] == '.':
answer = answer[:-1]
# 5
if answer == '':
answer = 'a'
# 6
if len(answer) > 15:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
# 7
while len(answer) < 3:
answer += answer[-1]
return answer
리뷰
- 문자열 사용할 때 슬라이싱과 정규표현식 사용하기
- while문 더 간결하게 짤 수 있도록 노력하기
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level 1_크레인 인형뽑기 게임 (0) | 2022.07.08 |
---|---|
[프로그래머스] Level 1_키패드 누르기 (0) | 2022.07.04 |
[프로그래머스] Level 1_로또의 최고 순위와 최저 순위 (0) | 2022.06.16 |
[프로그래머스] Level 1_숫자 문자열과 영단어 (0) | 2022.06.16 |
[프로그래머스] Level 1_소수 찾기 (0) | 2022.06.15 |
Comments