문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
입출력 예
| my_string | result |
| "aAb1B2cC34oOp" | 10 |
| "1a2b3c4d123" | 16 |
입출력 예 설명
입출력 예 #1
"aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.
입출력 예 #2
"1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.
유의사항
연속된 숫자도 각각 한 자리 숫자로 취급합니다.
풀이
📌정규표현식(Regular Expression)
- 문자열에서 특정 패턴을 찾거나, 추출하거나, 변환할 때 사용하는 도구
- Pattern 클래스와 Matcher 클래스를 사용하여 처리
○ 기본 정규표현식 문법
| 정규표현식 | 의미 | 예제 | 결과 |
| \d | 숫자(0~9) 한 개 | "abc123" | "1", "2", "3" |
| \D | 숫자가 아닌 문자 | "abc123" | "a", "b", "c" |
| \w | 문자 + 숫자 ([a-zA-Z0-9_]) | "abc_123!" | "a", "b", "c", "_", "1", "2", "3" |
| \W | 문자 + 숫자가 아닌 문자 | "abc_123!" | "!" |
| \s | 공백 문자 (스페이스, 탭, 개행) | "Hello World" | " " |
| \S | 공백이 아닌 문자 | "Hello World" | "H", "e", "l", "l", "o", "W", "o", "r", "l", "d" |
● 반복 문자
| 정규표현식 | 의미 | 예제 | 결과 |
| \d+ | 하나 이상의 숫자 (1개 이상) | "abc123" | "123" |
| \d* | 0개 이상 숫자 | "abc123" | "", "123" |
| \d? | 숫자가 0개 또는 1개 | "a1b23" | "1", "", "2", "3" |
| \d{3} | 정확히 3자리 숫자 | "12345" | "123" |
| \d{2,4} | 2~4자리 숫자 | "12345" | "1234" |
1. 정규표현식(Regex)을 사용하기 위해 Pattern과 Matcher을 import 해줍니다
2. 정규표현식 패턴을 컴파일 해서 Pattern 객체를 만들어줍니다.
//d : 숫자 한개(0-9)를 찾는 정규식
※ \d는 정규표현식에서 숫자를 의미하는데, Java에서 \는 특수 문자라서 \\d로 작성해야 함.
3. my_string에서 pattern(\\d)을 찾을 수 있도록 Matcher 객체를 생성해줍니다.
4. 찾을 수 있는 모든 숫자를 탐색하기 위해 while문을 사용해줍니다.
(my_string에서 일치하는 값을 찾으면 true 반환)
5. matcher가 찾은 문자열을 정수로 변환한 뒤 변환된 숫자를 sum에 더해줍니다.
6. 결과 모든 숫자를 더한 sum을 반환해줍니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Solution {
public int solution(String my_string) {
int sum = 0;
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(my_string);
while(matcher.find()){
sum += Integer.parseInt(matcher.group());
}
return sum;
}
}
'CodingTest > Programmers' 카테고리의 다른 글
| 중복된 숫자 개수 [프로그래머스 코딩테스트 입문] (0) | 2025.02.27 |
|---|---|
| 모음 제거 [프로그래머스 코딩테스트 입문] (0) | 2025.02.24 |
| 삼각형의 완성조건(1)[프로그래머스 코딩테스트 입문] (0) | 2025.02.13 |
| 최대값 만들기 [프로그래머스 코딩테스트 입문] (0) | 2025.02.11 |
| 점의 위치 구하기 [프로그래머스 코딩테스트 입문] (0) | 2025.02.02 |