def solution(my_string):
answer = ''.join(i if i.isdigit() else ' ' for i in my_string)
# my_string에서 isdigit() 함수를 통해, 숫자를 ''에 기입
# 숫자가 아닐 경우 공백으로 ''에 기입
return sum(int(i) for i in answer.split())
# 공백으로 나눈 answer를 split()으로 구분하여 숫자를 sum
# i는 ''문자열화이기 때문에 int로 변환
🤔 문제 풀이
- answer = ''.join(i if i.isdigit() else ' ' for i in my_string)
- ''.join() 함수를 써서, ()에 바로 조건을 적어주었어요
- 뒤에서부터 해석할게요
- for i in my_string
- my_string을 i로 돌릴 겁니다.
- if i.isdigit()
- 만약 i가 숫자라면 i값 그대로 join 해줄 거예요
- else ' '
- 아니라면 '' 공백으로 join 해줄게요
- for i in my_string
- 이 모든 걸 answer에 담아냈어요
- return sum(int(i) for i in answer.split())
- 궁극적인 목표는 문자열에 있는 숫자들의 합이었어요
- 그래서 return으로 sum을 해줄 거예요
- for i in answer.split()
- 아까 my_string을 숫자인 값을 answer에 join 해주고, 문자면 ''공백으로 기입했죠?
- answer을 공백으로(.split) 구분한 것을 i에 넣어줄게요
- sum(int(i))
- 그 i를 int형으로 변환하여 sum 해주면 문제 해결!
- for i in answer.split()
함수 | 설명 |
isdigit() | 숫자가 있는지 판별하는 함수 (True, False로 반환) |
isalpha() | 문자가 있는지 판별하는 함수 (True, False로 반환) |
isdigit()
Ex1 = '010-1234-5678'
Ex2 = '123456'
Ex3 = "R4R3"
print(Ex1.isdigit()) #False
print(Ex2.isdigit()) #True
print(Ex3.isdigit()) #False
isalpha()
Ex1 = 'A'
Ex2 = 'ABC'
Ex3 = "앱피아"
Ex4 = "Hello Appia"
Ex5 = "100Appia"
#print the is the result for isalpha()
print(Ex1.isalpha()) #True
print(Ex2.isalpha()) #True
print(Ex3.isalpha()) #True
print(Ex4.isalpha()) #False
print(Ex5.isalpha()) #False
후기
앞서 모스부호 문제에도 1시간을 썼는데,
이번에도 1시간을 써서 문제를 푸니까 에너지 소모가 크네요,,
과거에 비해서 지금의 제가, 본 것도 많고 아는 것도 많아져서 머리가 더 복잡해졌어요
그래서 이것도 해보고 저것도 해봤는데 다 안 돼서 ㅠㅠ 하
초반에 ''.join()함수, isdigit() 함수로 시작했거든요
그걸로 다시 돌아가서 문제를 천천히 풀어봤어요
해냈으니 됐어요,,
생각했던 걸 코드화 시킬 수 있어서 다행이었던 문제였습니다.
'문제 풀기 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 한 번만 등장한 문자 (+실패한 흔적, .count()) (1) | 2025.01.02 |
---|---|
[프로그래머스] 가까운 수 (+실패 흔적들), 1h 30m (0) | 2025.01.02 |
[프로그래머스] 팩토리얼 (+실패흔적들, 1h) (1) | 2024.12.31 |
[프로그래머스] 모스부호(1) (0) | 2024.12.31 |
[프로그래머스] 중복된 문자 제거 ''.join(dict.fromkeys()) (0) | 2024.12.31 |