| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- vscode
- re-id
- WIL
- Git
- 파이썬
- 2주차
- WebSocket
- 채팅
- 정보처리기사
- github
- 프로그래머스
- sql
- 장고
- poetry
- 백준
- 가상환경
- Class
- resnet50
- 미니프로젝트
- 프로젝트
- 정보처리기사실기
- Commpot
- channels
- WHERE절
- 알고리즘
- REDIS
- 개발일지
- js
- 1주차
- 마스킹
Archives
- Today
- Total
개발일기
#5 프로그래머스 크기가작은부분문자열/모음제거(re.sub 개념)/숨어있는숫자의덧셈 본문
1. 크기가 작은 부분 문자열 (이건 페어프로그래밍으로 푼 풀이라서..! 정리한다~)
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서,
이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우,
t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
# 크기가 작은 부분 문자열
def solution(t, p):
forcount=len(t)-len(p)+1
count = 0
for i in range(forcount):
if t[i:i+len(p)] <= p:
count += 1
print(count)
2. 모음제거
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
# 모음 제거
def solution(my_string):
for i in ['a','i','e','o','u']:
my_string = my_string.replace(i,'')
return my_string
# 다른 사람 풀이
def solution(my_string):
return "".join([i for i in my_string if not(i in "aeiou")])
def solution(my_string):
A = ['a','e','i','o','u']
answer = ''
for i in my_string:
if i not in A:
answer += i
return answer
import re
def solution(my_string):
answer = re.sub("a|e|i|o|u", "", my_string)
return answer
re.sub 사용법
더보기
그 전에, re가 무엇인지 알아보자.
re는 regular expression의 약자로 정규표현식을 의미한다.
python의 re 라이브러리에는 sub라는 메소드가 존재하고, 이는 어떤 패턴을 내가 원하는 것으로 대체해준다.
그럼 replace와는 무엇이 다를까?
- replace 함수는 어떤 문자를 다른 문자로 대체해주는 것
- 그러나 re.sub는 어떤 패턴에 맞는 문자를 대체해준다.
1. 먼저 import re를 해야한다.
2. re.sub('패턴', '바꿀문자열', '문자열', 바꿀횟수) 또는 re.sub('패턴', 교체함수, '문자열', 바꿀횟수)
여기서 바꿀 횟수를 넣으면 지정된 횟수만큼 바꾸며 바꿀 횟수를 생략하면 찾은 문자열을 모두 바꿔준다.
answer = re.sub("a|e|i|o|u", "", my_string)
이 코드는 my_string에서 a 또는 e 또는 i 또는 o 또는 u가 나오면 없애라는 코드이다.
문자뿐 아니라 숫자도 가능하다.
>>> answer = re.sub('[0-9]+', "!", "안녕하세요. 저는 9월 8일생입니다.")
>>> print(answer)
안녕하세요. 저는 !월 !일생입니다.
re.sub 함수는 바꿀 문자열 대신 교체함수를 지정할 수 있다.
def multiple2(m):
n = int(m.group())
return str(n*2) # 숫자에 2배를 곱해주는 함수
import re
answer = re.sub('[0-9]+', multiple2, '10에 2를 곱하면 20이지')
# [0-9] : 0부터 9까지의 숫자
print(answer) #20에 4를 곱하면 40이지
이렇게 함수를 지정해줄 수도 있다.
lambda를 이용할 수도 있다.
import re
answer = re.sub('[0-9]+', lambda x: str(int(x.group())*2), '10에 2를 곱하면 20이지')
# [0-9]+ : 0부터 9까지의 숫자
print(answer) #20에 4를 곱하면 40이지
3. 숨어있는 숫자의 덧셈
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
# 숨어있는 숫자의 덧셈
def solution(my_string):
number = ['1','2','3','4','5','6','7','8','9']
answer = 0
for i in my_string:
if i in number:
answer += int(i)
print(answer)
# 다른 사람 풀이
def solution(my_string):
return sum(int(i) for i in my_string if i.isdigit())
def solution(my_string):
answer = 0
for i in my_string:
try:
answer = answer + int(i)
except:
pass # 문자인 경우는 오류라서 except
return answer'오류 및 알고리즘정리본' 카테고리의 다른 글
| #7 프로그래머스 카드뭉치/암호해독/대문자, 소문자 바꾸기/가위바위보/세균증식 (2) | 2023.04.21 |
|---|---|
| #6 프로그래머스 개미군단/문자열안에문자열/제곱수판별 (1) | 2023.04.20 |
| 에러메세지) manage.py:23: UserWarning: Not reading .env - it doesn't exist. dotenv.read_dotenv() (0) | 2023.04.11 |
| #4 프로그래머스 순서쌍개수/최빈값찾기 (0) | 2023.04.06 |
| TypeError: can only join an iterable 에러메세지 (feat. 프로그래머스 문자열 뒤집기, 특정 문자 제거하기 알고리즘) (0) | 2023.04.05 |