728x90
🔗 문제 링크
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제 개요
문자열 my_string이 주어질 때, 문자열에 포함된 모든 숫자의 합을 구하는 문제이다.
알파벳은 무시하고 숫자(0~9)만 찾아 각각의 값을 더한 뒤 결과를 반환하면 된다.
예를 들어 "aAb1B2cC34oOp"가 입력되면 숫자는 1, 2, 3, 4이므로 결과는 10이 된다.
📌 접근 방법
문자열을 처음부터 끝까지 순회하면서 각 문자를 확인한다.
현재 문자가 숫자인지 판단하기 위해 '0' 이상 '9' 이하인지 범위 비교를 수행한다.
숫자라면 문자에서 '0'을 빼 실제 정수 값으로 변환한 뒤 결과에 누적한다.
이 방법은 숫자를 하나씩 비교하는 것보다 코드가 간결하며, 코딩 테스트에서도 자주 사용되는 방식이다.
📌 핵심 아이디어
1. 문자열을 한 글자씩 순회하기
charAt()을 이용해 문자열의 각 문자를 차례대로 확인한다.
for (int i = 0; i < my_string.length(); i++) {
char c = my_string.charAt(i);
}
2. 숫자인지 범위 비교하기
문자는 내부적으로 아스키 코드(유니코드) 값을 가지므로 범위 비교가 가능하다.
if (c >= '0' && c <= '9')
따라서 '0' 이상 '9' 이하라면 숫자로 판단할 수 있다.
'0' → 48
'1' → 49
...
'9' → 57
3. 문자 숫자를 정수로 변환하기
문자 '3'은 실제 숫자 3이 아니라 문자 코드값 51이다.
'0'의 코드값은 48이므로 숫자로 변환된다.
result += c - '0';
'3' - '0'
= 51 - 48
= 3
'7' - '0'
= 55 - 48
= 7
이 원리는 코딩 테스트에서 매우 자주 활용되는 문자 처리 기법이다.
📌 전체 코드
public class Solution {
public int solution(String my_string) {
int result = 0;
for (int i = 0; i < my_string.length(); i++) {
char c = my_string.charAt(i);
if (c >= '0' && c <= '9') {
result += c - '0';
}
}
return result;
}
}
📄 정리
- 문자열을 순회하면서 숫자만 찾아 합산하는 구현 문제이다.
- '0' <= c <= '9' 범위 비교를 사용하면 숫자를 간결하게 판별할 수 있다.
- c - '0' 연산을 통해 문자 형태의 숫자를 실제 정수로 변환할 수 있다.
- 아스키 코드(유니코드) 기반의 문자 연산은 다양한 문자열 문제에서 자주 활용되므로 익혀두면 많은 문제를 쉽게 해결할 수 있다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 크레인 인형뽑기 게임 JAVA 풀이 (2019 카카오 개발자 겨울 인턴십) (0) | 2026.07.08 |
|---|---|
| 프로그래머스 택배 상자 꺼내기 JAVA 풀이 (2025 코드 챌린지) (0) | 2026.07.07 |
| 프로그래머스 다트 게임 JAVA 풀이 (0) | 2026.07.04 |
| 프로그래머스 PCCE 기출문제 10번 데이터 분석 JAVA 풀이 (구현, 정렬) (0) | 2026.07.03 |
| 프로그래머스 체육복 JAVA 풀이 (그리디, 구현) (0) | 2026.07.02 |