이 영역을 누르면 첫 페이지로 이동
자라자 블로그의 첫 페이지로 이동

자라자

페이지 맨 위로 올라가기

프로그래머스_신규아이디추천_파이썬

자라자

프로그래머스_신규아이디추천_파이썬

  • 2021.09.09 14:55
  • PS/Programmers
프로그래머스로고

[문제 링크]

https://programmers.co.kr/learn/courses/30/lessons/72410

[소스코드]

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

정규표현식

  1. 사용법 (import re필요)
import re
# 1. 정규표현식 객체를 컴파일해서 사용.
regex=re.compile('[a-z\')
# 2. 위 문제처럼 메소드만 문제푸는데 사용
ex = re.sub('[^a-z0-9\-_.]', '', st)
ex = re.match('[a-z]+', "python")
  • 정규식 객체 생성 > 생성된객체.method를 이용하는 방법과 re.메소드를 바로 이용하는 방법이 있는데 본질적으로 같으므로 라인이 짧은 메소드를 바로 이용하는 쪽을 선택하자.
  1. 메소드
  • re.match(pattern,string): re.match object 반환 (없으면 None 반환), 첫단어가 일치해야한다.
  • re.search(pattern,string): re.match object 반환, 문장 전체에서 찾아준다.
  • re.match나 re.search에서 반환되는 객체에 .group()을 취해줘야 결과를 얻을 수 있다.
  • re.findall(pattern,string): 전부 찾아서 리스트로 반환해준다.
  • re.finditer(pattern,string): 제너레이터로 반환해준다.
  • re.sub(pattern,대체할문자,string): replace와 비슷하게 동작, 타겟을 여러개로 정할 수 있다는 장점이 있음.
import re
# match
m=re.match('[a-z]+',"python111love")
print(m) #<re.Match object; span=(0, 6), match='python'>
print(m.group()) #python
m=re.match('[a-z]+',"111love")
print(m) #None
# search
print(re.search('[a-z]+',"111love222python").group()) #love
# findall
print(re.findall('[a-z]+',"11python22love33google")) # ['python', 'love', 'google']
# finditer
for i in (re.finditer('[a-z]+',"11python22love33google")):
print(i.group())
# python
# love
# google

[풀이]

  1. 소문자로 전환
  2. -,_,.제거
  3. .이 2번 이상 쓰인 부분 1번만
  4. 시작, 끝 . 제거
  5. 빈문자나 초과 문자 처리.
  6. 마침표 한번 더 제거.
  7. 길이가 2 이하일 경우 마지막자리 덧붙이기

'PS > Programmers' 카테고리의 다른 글

프로그래머스_표_편집  (0) 2021.09.09
프로그래머스_N개의최소공배수_파이썬  (0) 2021.09.09
프로그래머스_크레인_인형뽑기_게임  (0) 2021.09.09
프로그래머스_키패드누르기_파이썬  (0) 2021.09.09
프로그래머스_비밀지도_파이썬  (0) 2021.09.09

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 프로그래머스_표_편집

    프로그래머스_표_편집

    2021.09.09
  • 프로그래머스_N개의최소공배수_파이썬

    프로그래머스_N개의최소공배수_파이썬

    2021.09.09
  • 프로그래머스_크레인_인형뽑기_게임

    프로그래머스_크레인_인형뽑기_게임

    2021.09.09
  • 프로그래머스_키패드누르기_파이썬

    프로그래머스_키패드누르기_파이썬

    2021.09.09
다른 글 더 둘러보기

정보

자라자 블로그의 첫 페이지로 이동

자라자

  • 자라자의 첫 페이지로 이동

검색

메뉴

  • 🏠 HOME
  • 💡 ABOUT
  • 💻 GITHUB

카테고리

  • 분류 전체보기 (91)
    • Tech Note (3)
    • Dev Log (11)
    • Study Log (11)
    • Settings (3)
    • PS (53)
      • Programmers (21)
      • BOJ (32)
    • Diary (10)

인기 글

공지사항

태그

  • 공식문서읽기
  • 리액트
  • ㅣ

정보

자라자의 자라자

자라자

자라자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 자라자. Designed by Fraccino.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.