문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string 안의 모든 자연수들의 합을 return 하도록 solution 함수를 완성해줏요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어 있습니다.
입출력 예
| my_string | result |
| "aAb1B2cC34oOp" | 10 |
| "1a2b3c4d123" | 16 |
내 풀이
def solution(my_string):
answer = []
number = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
for i in my_string:
if i in number:
answer.append(int(i))
sum = 0
for i in answer:
sum += i
return sum
회고
- 도대체 언제까지 이따위로 코드 쓸 생각?...
- 문자열 my_string을 돌면서 숫자인 것(number 리스트의 요소에 포함되는 것)만을 answer 배열에 담았다.
- 변수가 문자일 때만 가능하니까 number 리스트의 요소를 아예 문자로 썼고, 나중에 따로 int 함수를 입혀서 숫자로 다시 바꿔주었다.
- 정리된 answer 배열(숫자인 것만 담겨 있음)의 합을 구해주었다.
- 코드 개판이지만 그래도 여기까지는 정리함:
def solution(my_string):
number = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
answer = [ int(i) for i in my_string if i in number ]
sum = 0
for i in answer:
sum += i
return sum
- 인상 깊었던 풀이: sum(int(i) for i in my_string if i.isdigit())
- 문자열 my_string에서 숫자인 요소만 int형으로 바꾸어 합계를 구한다.
- isnumeric() 또는 isdigit() 함수를 썼으면 귀찮게 숫자 리스트를 따로 만들 필요가 없었을 듯
- 이 둘의 차이점은 정확히 모르겠다
- for c in my_string: if c.isnumeric(): answer += int(c) 로만 썼어도 충분했겠군. 다들 천잰가
- 그래도 모범답안이랑 생각한 모양새는 좀 비슷해서 다행이다.
'Programmers > Python' 카테고리의 다른 글
| [프로그래머스] [Python] 최댓값 만들기 (1) (0) | 2022.11.11 |
|---|---|
| [프로그래머스] [Python] 배열의 유사도 (0) | 2022.11.11 |
| [프로그래머스] [Python] 모음 제거 (0) | 2022.11.11 |
| [프로그래머스] [Python] 배열 두 배 만들기 (0) | 2022.11.11 |
| [프로그래머스] [Python] 특정 문자 제거하기 (0) | 2022.11.11 |