728x90
코드 힌트
- 문자열을 순회하며 숫자 찾기:
- 주어진 문자열을 하나씩 문자 단위로 검사합니다. 이때, 숫자인 경우와 문자(알파벳)인 경우를 구분해야 합니다.
- 숫자 연속성 처리:
- 연속된 숫자를 모아야 합니다. 문자열을 순회하면서 숫자를 발견하면, 이를 모아서 문자열로 저장합니다. 만약 문자가 나오면, 현재까지 모은 숫자를 정수로 변환하여 결과에 더하고, 저장된 숫자를 비워야 합니다.
- 문자 후 처리:
- 문자열 끝에 도달했을 때, 마지막으로 모아 놓은 숫자가 있으면 이를 정수로 변환하여 결과에 추가합니다. 이렇게 해야 모든 숫자를 처리할 수 있습니다.
- 숫자 처리 및 초기화:
- 숫자를 모을 때는 StringBuilder를 사용하여 숫자를 문자열로 쌓습니다. 문자를 만나면, 그동안 모은 숫자를 정수로 변환하고 결과에 더한 후, StringBuilder를 초기화합니다.
- 정규식을 활용한 방법:
- 정규식을 활용하여 문자열을 자르고(split()) int로 타입 변환을 하여 저장하는 방법도 있습니다.
정답은 더보기 클릭
더보기
class Solution {
public int solution(String my_string) {
// 결과를 저장할 변수 초기화
int result = 0;
// 숫자를 저장할 StringBuilder 초기화
StringBuilder sb = new StringBuilder();
// 문자열을 순회하며 각 문자 처리
for (int i = 0; i < my_string.length(); i++) {
// 현재 문자 가져오기
char c = my_string.charAt(i);
// 현재 문자가 숫자인 경우
if (c >= '0' && c <= '9') {
// 숫자를 StringBuilder에 추가
sb.append(c);
}
// 현재 문자가 숫자가 아니고, StringBuilder에 숫자가 저장된 경우
else if (sb.length() > 0) {
// StringBuilder의 숫자를 정수로 변환하여 결과에 추가
result += Integer.valueOf(sb.toString());
// StringBuilder 초기화
sb.setLength(0);
}
}
// 반복이 끝난 후, StringBuilder에 남아 있는 숫자 처리
if (sb.length() > 0) {
// 마지막 숫자를 정수로 변환하여 결과에 추가
result += Integer.valueOf(sb.toString());
}
// 최종 결과 반환
return result;
}
}
정규식 활용하기
class Solution {
public int solution(String my_string) {
// 결과를 저장할 변수 초기화
int result = 0;
// 숫자를 추출하기 위해 문자열을 정규식으로 분리
// [a-zA-Z]+는 알파벳이 하나 이상 연속된 부분을 의미합니다.
// 이 정규식을 사용하여 알파벳을 기준으로 문자열을 나눕니다.
for (String num : my_string.split("[a-zA-Z]+")) {
// 빈 문자열이 아닐 경우에만 처리
if (!num.isEmpty())
// 추출된 숫자를 정수로 변환하여 결과에 추가
result += Integer.parseInt(num);
}
// 최종 결과 반환
return result;
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 한 번만 등장한 문자 (0) | 2024.08.14 |
---|---|
[프로그래머스] A로 B 만들기 (0) | 2024.08.14 |
[프로그래머스] 팩토리얼 (0) | 2024.08.14 |
[프로그래머스] 모스부호 (1) (0) | 2024.08.14 |
[프로그래머스] 진료순서 정하기 (0) | 2024.08.14 |