본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 숨어있는 숫자의 덧셈 (2) / split() 정규식

 

Level. 0

 

문제

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

* 제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ my_string 안의 자연수 ≤ 1,000
- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.

 

풀이

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        String num = "";
        my_string += 'A';
        for(int i=0; i<my_string.length(); i++){
            if(my_string.charAt(i) >= '0' && my_string.charAt(i) <= '9'){
                num += my_string.charAt(i);
                continue;
            }
            if(num.length() > 0){
                answer += Integer.parseInt(num);
                num = "";
            }
        }
        return answer;
        
    }
}

 

 

다른 풀이

class Solution {
    // [a-zA-Z0-9] : 알파벳과 숫자
    public int solution(String my_string) {
        int answer = 0;

        String[] nums = my_string.split("[a-zA-Z]");
        for(String num : nums){
            if(num.length() > 0)
                answer += Integer.parseInt(num);
        }
        
        return answer;
        
    }
}

 

split에 정규식을 사용하여 알파벳을 기준으로 문자열을 잘라주었다. 

- [a-z] : 소문자

- [A-Z] : 대문자

- [a-zA-Z] : 알파벳

- [a-zA-Z0-9] : 대문자

 


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

 

프로그래머스

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

programmers.co.kr