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

자라자

페이지 맨 위로 올라가기

자라자

개발자를 준비하는 자라자의 블로그입니다.

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

  • 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.

티스토리툴바