코딩테스트/프로그래머스

[프로그래머스] Java:: 숨어있는 숫자의 덧셈(2)

블로그 주인장 2023. 9. 14.

문제 링크

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

문제 설명

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

입출력 예시

my_string result
"aAb1B2cC34oOp" 37
"1a2b3c4d123Z" 133

풀이

1. my_string 안에 대/소문자 + 자연수로 구성되어있다.

2. my_string 안의 자연수만 추출하여 합을 도출하는 문제이다.

정규식 예시

- 대문자만 추출

String my_string = "aAb1B2cC34oOp";

String[] arr = my_string.split("[a-z]");
System.out.println(arr);

- 소문자만 추출

String my_string = "aAb1B2cC34oOp";

String[] arr = my_string.split("[A-Z]");
System.out.println(arr);

- 자연수만 추출

String my_string = "aAb1B2cC34oOp";

String[] arr = my_string.split("[0-9]");
System.out.println(arr);

- 대/소문자 추출

String my_string = "aAb1B2cC34oOp";

String[] arr = my_string.split("[a-zA-Z]");
//String[] arr = my_string.split("[A-Za-z]");	//사전순으로 하므로 대문자부터 쓰면 Fail
System.out.println(arr);

- 자연수 빼고 추출

String my_string = "aAb1B2cC34oOp";

String[] arr = my_string.split("[^0-9]");
System.out.println(arr);

코드

import java.util.*;

class Solution {
    public int solution(String my_string) {

        String[] ms = my_string.split("[a-zA-Z]");
        System.out.println("ms:" + Arrays.toString(ms));
        String[] nums = my_string.split("[^0-9]");
        System.out.println("nums:" + Arrays.toString(nums));

        int answer = 0;
        for(int i = 0; i < nums.length; i++) {
            if(!nums[i].isEmpty()) {
                answer += Integer.parseInt(nums[i]);
            }
        }
        
        return answer;
    }
}
반응형

댓글