문제
https://school.programmers.co.kr/learn/courses/30/lessons/120864
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
import re
def solution(my_string):
return sum(int(i) for i in re.findall(r"[0-9]+", my_string))
findall
re 모듈의 findall 메소드는 문자열 내에서 특정 패턴(정규 표현식)을 만족하는 모든 문자열을 return한다.
(re는 정규표현식을 뜻하는 regex(regular express)에서 옴, 파이썬에서 정규표현식을 사용할 때 사용하는 내장모듈이다.
re.match(), re.search(), re.fullmatch(), re.split() 등의 함수가 있다. 자유롭게 정규표현식을 작성할 수 있어 문자열 처리를 할 때에 다른 함수들도 매우 유용할 것 같다!)
findall(패턴, 문자열)
위 코드에서 + 기호가 있음으로써 연속된 수가 하나의 수로 간주된다. + 기호가 없으면 숨어있는 숫자의 덧셈(1)처럼 숫자가 따로따로 들어간다. r은 꼭 붙이나보당
다른 사람의 풀이
def solution(my_string):
s = ''.join(i if i.isdigit() else ' ' for i in my_string)
return sum(int(i) for i in s.split())
처음엔 위 방법처럼 알파벳을 공백으로 처리하는 방법을 생각했었는데 join으로 처리할 수 있다는 것을 잊고있었다. 아직 문법에 익숙하지 않아서 이 풀이로 풀지 못하였다 ㅜㅜ
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스 Lv.0] 문자열 계산하기 _파이썬 (0) | 2023.03.08 |
---|---|
[프로그래머스 Lv.0] 영어가 싫어요 _파이썬 (1) | 2023.03.08 |
[프로그래머스 Lv.0] k의 개수 _파이썬 (0) | 2023.03.06 |
[프로그래머스 Lv.0] A로 B 만들기 _파이썬 (0) | 2023.03.05 |
[프로그래머스 Lv.0] 숫자 찾기 _파이썬 (0) | 2023.03.05 |