-
8.6.일요일TIL( Today I Learned) 2023. 8. 6. 22:14
- 숨어있는 숫자의 덧셈 (2)
- 난 어려워서 거의 쳇 gpt 도움을 많이 받아서 풀었었다. 이번에 다시 보면서, 나름 확실히 이해하려고 했다.
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ my_string 안의 자연수 ≤ 1000
- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
입출력 예
my_string result "aAb1B2cC34oOp" 37 "1a2b3c4d123Z" 133 입출력 예 설명
입출력 예 #1
- "aAb1B2cC34oOp"안의 자연수는 1, 2, 34 입니다. 따라서 1 + 2 + 34 = 37 을 return합니다.
입출력 예 #2
- "1a2b3c4d123Z"안의 자연수는 1, 2, 3, 4, 123 입니다. 따라서 1 + 2 + 3 + 4 + 123 = 133 을 return합니다.
쳇답
def solution(my_string):
num_list = []
num_str = ""
for char in my_string:
if char.isdigit():
num_str += char
else:
if num_str:
num_list.append(int(num_str))
num_str = ""
if num_str:
num_list.append(int(num_str))
answer = sum(num_list)
return answer
def solution(my_string):
num_list = []
num_str = ""
for char in my_string:
if char.isdigit():
num_str += char
elif num_str:
num_list.append(int(num_str))
num_str = ""
if num_str:
num_list.append(int(num_str))
answer = sum(num_list)
return answer
내 답
import re
def solution(my_string):
numbers = re.findall(r'\d+',my_string)
int_num_list = [int(num) for num in numbers]
aa = int_num_list
aaa = sum(aa)
answer = aaa
return answer
먼저, 문자열에서 숫자를 추출하기 위해 빈 리스트와 빈 문자열을 생성합니다.
my_string = "aAb1B2cC34oOp"
num_list = []
num_str = ""
그리고 문자열을 한글자씩 순회하며, 각 글자가 숫자인지를 판별합니다.
만약 현재 글자가 숫자라면, 그 글자를 숫자 문자열에 추가합니다.
for char in my_string:
if char.isdigit():
num_str += char
만약 현재 글자가 숫자가 아니라면, 숫자 문자열이 비어있지 않은 경우에는
숫자 문자열을 정수로 변환하여 리스트에 추가합니다.
그리고 숫자 문자열을 초기화합니다.
elif num_str:
num_list.append(int(num_str))
num_str = ""
모든 글자를 순회한 후에도 숫자 문자열이 비어있지 않은 경우,
마지막 숫자 문자열을 리스트에 추가합니다.
if num_str:
num_list.append(int(num_str))
마지막으로 리스트에 저장된 숫자들의 합을 구하여 반환합니다.
answer = sum(num_list)
print(answer)
import re
def solution(my_string):
numbers = re.findall(r'\d+',my_string)
int_num_list = [int(num) for num in numbers]
aa = int_num_list
aaa = sum(aa)
answer = aaa
return answer
이 코드는 문자열에서 숫자를 찾아내서 그 숫자들의 합을 구하는 함수입니다.
1. `re.findall` 메소드를 사용해 문자열에서 숫자만 추출합니다. `r'\d+'`는 정규표현식으로서, 문자열에서 1개 이상의 연속된 숫자를 찾아냅니다.
2. 추출한 숫자들은 문자열 형태로 저장되어 있으므로, `int()` 함수를 사용해 정수형으로 변환합니다.
3. 변환한 숫자들의 리스트를 `sum()` 함수를 사용해 모두 더합니다.
4. 마지막으로, 더한 값을 `return` 키워드를 사용해 반환합니다.
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())
import re
def solution(my_string):
return sum([int(i) for i in re.findall(r'[0-9]+', my_string)])
내가 찾던 답
def solution(my_string):
answer = 0
temp = ''
for i in my_string:
if i.isdigit():
temp += i
else:
if temp:
answer += int(temp)
temp = ''
if temp:
answer += int(temp)
return answer
내가 찾던답 2
def solution(my_string):
intch = "0"
answer = 0
for ch in my_string:
if ch.isdigit():
intch += ch
else:
answer += int(intch)
intch = "0"
answer += int(intch)
return answer
'TIL( Today I Learned)' 카테고리의 다른 글
8.8.화요일 (0) 2023.08.08 8.7.월요일 코딧 강의 , 프로그래머스 복습 (0) 2023.08.07 8.5.토요일 (0) 2023.08.05 8.4.금요일// 프로그래머스 복습과 재도전 & 코딧 강의 (0) 2023.08.04 8.2.수요일 (0) 2023.08.02