주니어 기초 코딩공부/JAVA_programmers_코딩테스트
숨어있는 숫자의 덧셈 (1)_programmers_lev00
jju_developer
2022. 12. 3. 23:42
728x90
<코딩 테스트>
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
<나의 풀이 과정>
처음에는 모든 my_string 값을 String 배열에 담은 후, int 형으로 변환을 할 때에 영문 소문자와 대문자는 숫자 9이상이 넘어가기 때문에 for문으로 1< n <=9 사이의 값의 합을 구하려고 했었습니다.
하지만, 그렇게 하게되면 int 배열도 선언해야하고 생각보다 복잡했기 때문에 받게되는 문자열에서 영문을 다 제거를 먼저 하는 방식을 선택하였습니다.
모든 영문을 소문자로 변환 한 후, 그 값을 삭제 한 후, split 메서드를 이용하여 replace 시켰습니다.
<나의 풀이 코드>
class Solution {
public int solution(String my_string) {
int answer = 0;
String replace = "";
replace = my_string.toLowerCase().replaceAll("[abcdefghijklmnopqrstuvwxyz]", "");
String[] strArr = replace.split("");
for (int i = 0; i < strArr.length; i++) {
answer += Integer.parseInt(strArr[i]);
}
return answer;
}
}
<다른사람 풀이 1>
class Solution {
public int solution(String myString) {
return myString.chars().mapToObj(i -> (char) i).filter(Character::isDigit).map(String::valueOf).mapToInt(Integer::valueOf).sum();
}
}
<다른사람 풀이2>
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Solution {
public int solution(String my_string) {
int answer = 0;
String pattern = "^[0-9]*$";
String[] list = my_string.split("");
for(int i = 0; i < list.length; i ++) {
if(Pattern.matches(pattern,list[i])) {
answer += Integer.parseInt(list[i]);
}
}
return answer;
}
}
728x90