문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
입출력 예
입출력 설명
입출력 예 #1
- "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.
입출력 예 #2
- "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.
유의사항
- 연속된 숫자도 각각 한 자리 숫자로 취급합니다.
코드
class Solution {
public int solution(String my_string) {
int answer = 0;
my_string = my_string.replaceAll("[A-Z|a-z]", "");
for(int i=0; i<my_string.length(); i++) {
answer += my_string.charAt(i) - '0';
}
return answer;
}
}
풀이
replaceAll()을 이용해 대소문자 알파벳을 빈문자열로 대체해준 후 for문에서 my_string을 문자로 변환하여 - '0'을 해줘 문자에서 숫자로 변환한 값을 answer에 더해준다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
class Solution {
public int solution(String myString) {
return myString.chars().mapToObj(i -> (char) i).filter(Character::isDigit).map(String::valueOf).mapToInt(Integer::valueOf).sum();
}
}
myString을 문자로 변환하여 해당 문자가 숫자인지 확인하고, 숫자이면 이를 문자로 변환 후 숫자로 변환한다. 그 후 그 값을 더해준다.
class Solution {
public int solution(String my_string) {
int answer = 0;
String str = my_string.replaceAll("[^0-9]","");
for(char ch : str.toCharArray()) {
answer += Character.getNumericValue(ch);
}
return answer;
}
}
my_string에서 0부터 9까지의 수를 제외한 모든 것을 빈문자열로 대체해준다. 그 후 반복문에서 문자열 str을 문자로 변환하여 getNumericValue() 를 이용해 숫자형태의 char형을 int형으로 변환시켜 answer에 더해준다.
정리
getNumericValue()
: 숫자 형태의 char형을 int형으로 변환
- Character 클래스의 메서드
'Coding Test' 카테고리의 다른 글
231005 공배수 - Level 0 (1) | 2023.10.05 |
---|---|
231004 제곱수 판별하기 - Level 0 (1) | 2023.10.04 |
231003 순서쌍의 개수 - Level 0 (0) | 2023.10.03 |
231002 문자 반복 출력하기 - Level 0 (0) | 2023.10.03 |
231001 문자열 안에 문자열 - Level 0 (0) | 2023.10.01 |