코딩테스트연습/[프로그래머스] Java

[프로그래머스] Java 코딩테스트 연습 - 숨어있는 숫자의 덧셈 (2)

_꼬마돌 2023. 7. 22. 15:27
반응형

[프로그래머스] Java 코딩테스트 연습 - 숨어있는 숫자의 덧셈 (2)

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120864

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

 

풀이

replaceAll() 메서드로 알파벳 대소문자를 모두 공백으로 바꿔 배열에 숫자만 남도록 한 뒤, split() 메서드로 문자열을 공백을 기준으로 나눠서 문자열 배열 atr에 저장했다. 
str을 순회하면서 빈 배열이 아닌 부분만 정수로 변환한 뒤 answer에 더해지도록 했다.

 

소스코드

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        String[] str = my_string.replaceAll("[a-zA-Z]", " ").split(" ");
        
        for (String s : str) {
            if (!s.equals("")) {
                answer += Integer.parseInt(s);
            }
        }
        
        return answer;
    }
}

 

다른 풀이

[^\\d] 를 처음봐서 가져와봤다. 

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        my_string = my_string.replaceAll("[^\\d]", " ");
        // \\d : [0-9]와 동일한 의미를 가진다.
        //  ^  : 정규표현식에서 "부정"을 나타내는 메타문자.
        // 즉 [^\\d]는 숫자가 아닌 모든 문자를 뜻한다.
        
        String[] str = my_string.split(" ");
        for (int i = 0; i < str.length; i++) {
            answer += (!str[i].isEmpty()) ? Integer.parseInt(str[i]) : 0;
        }
        
        return answer;
    }
}

 

반응형