https://school.programmers.co.kr/learn/courses/30/lessons/120864
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
int solution(string my_string) {
int answer = 0;
int im=0;
for(int i=0;i<my_string.length();i++)
{
if(my_string[i]>='0'&&my_string[i]<='9')
{
if(im==0)im=(my_string[i]-'0');
else
{
im *= 10;
im += my_string[i]-'0';
}
}
else
{
answer+=im;
im=0;
}
}
if (im != 0)answer += im;
return answer;
}
설명
문자열에서 숫자인 부분을 int 형으로 바꿔서 다 더하는 문제이다.
if(my_string[i]>='0'&&my_string[i]<='9')
숫자인지 판별하는 코드이다.
만약 my_string[i] 이 숫자면 im 이라는 변수에 숫자를 저장한다.
그리고 문자가 나왔을 때, answer에 im을 더한다.
2자리 이상의 숫자는 im 의 값이 0 인지 아닌지를 비교해서 0이면 answer를 대입하고
0이 아니면 이전에 숫자가 나온 것이기 때문에 곱하기10 을 다시 더해준다.
그리고 문자가 나오면 im 값을 answer 에 더해준다.
조심할 것은 "zzz123" 같은 경우이다.
문자열이 3으로 종료되기 때문에 answer+=im 코드가 마지막에 실행되지 않는다.
따라서 반복문을 나오고 im이 0이 아니라면 더하지 않은 숫자가 있다는 뜻이므로 한 번 answer에 im을 더해주면 된다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 등수 매기기 - C++ (0) | 2023.08.17 |
---|---|
프로그래머스 - 컨트롤 제드 - C++ (0) | 2023.08.14 |
프로그래머스 - 가까운 수 - C++ (0) | 2023.08.13 |
프로그래머스 - A로 B 만들기 - C++ (0) | 2023.08.13 |
프로그래머스 - 합성수 찾기 - C++ (0) | 2023.08.12 |