본문 바로가기
프로그래머스 C++/Level.0

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

by yeni_0224 2023. 8. 2.
728x90
반응형

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

#include <string>
#include <vector>
#include <cctype>

using namespace std;

int solution(string my_string) {
    int answer = 0;
    for(int i = 0; i < my_string.size(); i++){
        if(isdigit(my_string[i])){
            answer += (my_string[i] - '0');
        }
    }
    return answer;
}

문자열 안에 있는 원소가 정수인지 문자인지 판별하는 함수가 필요했다.

atoi, isdigit 이렇게 두가지를 발견했고, isdigit 함수를 사용하기로 했다

 

이 함수에 대해 잘 설명한 링크

https://notepad96.tistory.com/64

 

C++ isupper, islower, isdigit - 문자 대소문자, 숫자 판별

1. isdigit, isupper, islower, isspace 문자열에서 대문자를 소문자로, 소문자를 대문자로 바꾸어주고 싶다거나 숫자인 경우 특정 행동을 해주고 싶을 경우가 있다. isdigit, isupper, islower, isspace 함수들은 각

notepad96.tistory.com

 

배열 안의 원소가 정수일 경우에만 조건문 안에 들어와서 그 값들을 더하면 된다.

모두 더했을 때 정수가 출력되어야하는데 굉장히 큰 수들이 더해진 값이 출력되었다.

 

이전에 문제 풀었을 때의 경우가 생각났다. 출력된 숫자들은 아스키코드 값들의 합인 것으로 추정된다.

그렇다면 아스키코드를 정수로 바꿔줘야하기 때문에

my_string[i] - '0'

이렇게 해주니까 제대로된 값이 출력되었다.

728x90
반응형