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
배열 안의 원소가 정수일 경우에만 조건문 안에 들어와서 그 값들을 더하면 된다.
모두 더했을 때 정수가 출력되어야하는데 굉장히 큰 수들이 더해진 값이 출력되었다.
이전에 문제 풀었을 때의 경우가 생각났다. 출력된 숫자들은 아스키코드 값들의 합인 것으로 추정된다.
그렇다면 아스키코드를 정수로 바꿔줘야하기 때문에
my_string[i] - '0'
이렇게 해주니까 제대로된 값이 출력되었다.
728x90
반응형
'프로그래머스 C++ > Level.0' 카테고리의 다른 글
프로그래머스 Level.0 문자 반복 출력하기 (0) | 2023.08.12 |
---|---|
프로그래머스 Level.0 자릿수 더하기 (0) | 2023.08.11 |
프로그래머스 C++ Level. 0 제곱수 판별하기 (0) | 2023.07.04 |
프로그래머스 C++ Level. 0 편지 (0) | 2023.06.25 |
프로그래머스 C++ Level. 0 배열 자르기 (0) | 2023.04.27 |