프로그래머스 숨어있는 숫자의 덧셈 (1)

KIMYEONGJUN·어제
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

문자열 my_string이 매개변수로 주어집니다.
my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

내가 이 문제를 보고 생각해본 부분

Solution9 sol = new Solution9();: 연산을 수행할 Solution9 클래스의 객체를 생성한다.
String test1, String test2: 알고리즘을 테스트하기 위한 문자열 데이터를 각각 정의한다.
System.out.println(sol.solution(...));: solution 메서드를 실행하고 반환된 최종 결과 값을 콘솔에 출력한다.
int answer = 0;: 숫자를 더한 총합을 저장할 변수 answer를 0으로 초기화한다.
for (int i = 0; i < my_string.length(); i++): 문자열의 첫 번째 글자부터 마지막 글자까지 한 글자씩 차례대로 확인하기 위한 반복문이다.
char c = my_string.charAt(i);: 현재 인덱스 i에 위치한 문자 하나를 추출하여 변수 c에 담는다.
if (Character.isDigit(c)): 추출한 문자가 숫자('0' ~ '9')인지 판별하는 조건문이다.
숫자일 때만 내부 로직이 실행된다.
answer += Character.getNumericValue(c);: 문자로 되어 있는 숫자를 실제 정수 값으로 변환한 뒤 answer에 누적해서 더한다.
return answer;: 모든 문자 탐색이 끝난 후 최종 합계 값을 반환한다.

코드로 구현

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);
            
            if (Character.isDigit(c)) {
                answer += Character.getNumericValue(c);
            }
        }
        
        return answer;
    }
}

프로그래머스 코드

package programmers.programmers2;

// 프로그래머스 숨어있는 숫자의 덧셈 (1)
public class Main166 {
    public static void main(String[] args) {
        Solution9 sol = new Solution9();

        // 테스트 예시 확인
        String test1 = "aAb1B2cC34oOp";
        String test2 = "1a2b3c4d123Z";

        System.out.println(sol.solution(test1)); // 결과: 10
        System.out.println(sol.solution(test2)); // 결과: 16
    }
}

class Solution9 {
    public int solution(String my_string) {
        int answer = 0;

        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);

            if (Character.isDigit(c)) {
                answer += Character.getNumericValue(c);
            }
        }

        return answer;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글