반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Elasticsearch
- 자바
- Python
- Linux
- 프로그래머스
- DPDK
- Kakao
- 파이썬
- docker
- IT
- 개발자
- 리눅스
- 도커
- springboot
- 운영체제
- 스프링부트
- 네트워크
- 쿠버네티스
- Spring
- 스프링
- Java
- programmers
- 프로그래머스 #카카오 #IT #코딩테스트
Archives
- Today
- Total
저고데
[프로그래머스]신규 아이디 추천 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명은 코드를 작성하기 위한 순서에서 자세히 설명하기 때문에 생략하도록 하겠다.
코드를 작성하기 위한 순서는 다음과 같다.
1. 대문자를 소문자로 변환해준다.
2. '.' '_' '-'을 제외한 문자를 제거해준다.
3. 연속되는 '.'을 모두 한 개의 '.'로 변환해준다.
4. 문자열의 시작과 끝에 '.'이 있는 경우, 제거해준다.
5. 문자열의 길이가 16 이상인 경우, 잘라준다.
6. 문자열이 없을 경우 'a'로 채워준다.
7. 길이를 자른 문자열의 시작과 끝에 '.'이 있는 경우 제거해준다.
8. 문자열의 길이가 2이하인 경우, 마지막 문자를 추가해 길이를 늘려준다.
import re #re.sub을 사용하기 위한 import문
def solution(new_id):
answer = ''
new_id=new_id.lower() #1번
moonsa='~!@#$%^&*()=+[{]}:?,<>\'/'
for i in new_id:
if i in moonsa:
new_id=new_id.replace(i,'') #2번
new_id = re.sub('\.+', '.', new_id) #3번 : '\.+'는 '.'이 여러 개인 것을 의미하고 이를 '.' 하나로 대처한다는 코드이다.
new_id = new_id.strip('.') #4번
if len(new_id)>=16: #5번
new_id=new_id[:15]
new_id = new_id.strip('.') #7번
if not new_id: #6번
new_id='aaa'
if len(new_id)<=2: #8번
while len(new_id)<=2:
new_id+=new_id[-1]
return new_id
본 문제는 문제의 조건에 따라서 순서대로 차근차근 해결하면 어렵지 않은 문제였다.
다만 연속되는 '.'를 '.' 하나로 변환하는 과정에서 문제를 겪었지만, re.sub이라는 함수를 찾아서 쉽게 해결할 수 있었다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]메뉴 리뉴얼 (0) | 2023.01.17 |
---|---|
[프로그래머스]불량 사용자 (0) | 2023.01.17 |
[프로그래머스]크레인 인형뽑기 게임 (1) | 2023.01.15 |
[프로그래머스]키패드 누르기 (0) | 2023.01.15 |
[프로그래머스]소수찾기 (1) | 2023.01.15 |