🔸 문제 설명
문자열 my_string이 주어집니다.
이 안에 숨어 있는 한 자리 숫자들만 골라서 전부 더한 값을 구해야 합니다.
❗ 주의: "123"은 연속된 숫자처럼 보여도
→ 1, 2, 3으로 따로 더해야 해요!
🔸 입출력 예시
my_string | 결과 | 설명 |
"aAb1B2cC34oOp" | 10 | 1+2+3+4 |
"1a2b3c4d123" | 16 | 1+2+3+4+1+2+3 |
🔍 내가 헷갈렸던 부분
❓ "문자에서 숫자만 고르는 방법"이 어렵게 느껴졌어
처음엔 Character.isDigit() 같은 걸 써야 하나 했는데,
'0' <= c <= '9' 방식으로 훨씬 쉽게 해결할 수 있었어!
🔸 정답 코드
class Solution {
public int solution(String my_string) {
int answer = 0;
for (int i = 0; i < my_string.length(); i++) {
char c = my_string.charAt(i);
if (c >= '0' && c <= '9') { // 숫자면
answer += c - '0'; // 문자 → 숫자로 바꿔 더하기
}
}
return answer;
}
}
✨ 코드 설명
- char c = my_string.charAt(i)
→ 문자열에서 문자 하나 꺼냄 - c >= '0' && c <= '9'
→ 숫자인지 확인하는 가장 쉬운 방법
(숫자 문자 '0'~'9'는 연속된 문자이기 때문에 비교 가능) - c - '0'
→ 문자를 숫자로 바꾸는 공식
예: '3' - '0' = 3