[알고리즘문제풀기] 숨어있는 숫자의 덧셈 (1)

silver's avatar
Dec 19, 2024
[알고리즘문제풀기] 숨어있는 숫자의 덧셈 (1)

문제

정답

class Solution { public int solution(String my_string) { int answer = 0; for(char c :my_string.toCharArray()){ if(Character.isDigit(c)){ answer += Character.getNumericValue(c); } } return answer; } }

다른 사람들이 작성한 정답

replaceAll

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; } }

아스키코드

class Solution { public int solution(String my_string) { int answer = 0; for(char c : my_string.toCharArray()){ // char 타입은 정수형으로 변환가능 // 각 문자는 아스키코드 값을 가지며, '0'~'9'는 연속적인 아스키코드 값을 가진다. if(c >= '0' && c <= '9'){ /* 아스키코드 값에서 문자 '0'의 유니코드 값을 뺀다. -> 해당 숫자문자의 정수값을 반환한다. 예를들면, c - '0'을 수행하면: -> 0의 아스키코드 값 : 48 '0'일 때: 48 - 48 = 0 '1'일 때: 49 - 48 = 1 '2'일 때: 50 - 48 = 2 */ answer += c - '0'; } } return answer; } }

StreamAPI

class Solution { public int solution(String myString) { return myString.chars() // 문자열의 각 문자를 스트림에 던진다 .mapToObj(i -> (char) i) //stream의 각 문자를 Stream<Character>의 구성요소로 변환한다. .filter(Character::isDigit) // 숫자만 필터링 .map(String::valueOf) // 필터링된 숫자 문자를 문자열로 변환 (Character.isDigit 메서드는 문자가 숫자인지 확인) .mapToInt(Integer::valueOf) //문자열로 변환된 숫자 문자를 정수로 변환(Integer.valueOf는 문자열을 정수로 변환) .sum(); // 더하기 } }
 
💡
::는 메서드 참조(Method Reference)를 나타내는 구문
 
Share article

silver