728x90
- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120864
"숨어있는 숫자의 덧셈 (1)" 문제와 연관된 문제이다.
이번에는 연속된 수일 경우, 하나의 수로 계산해주도록 한다.
1) 문자열 처음 문자부터 끝 문자까지 for문 수행
2) 문자가 숫자인 경우, 임시 문자열에 추가
3) 문자가 숫자가 아닌 경우, 임시 문자열을 숫자로 변환하여 합 계산
4) for 문 완료 시, 아직 계산되지 않은 임시 문자열의 값이 존재하는지 확인하여 합 계산
#include <string>
#include <cctype>
using namespace std;
int solution(string my_string) {
int answer = 0;
string num = "";
for (char c : my_string)
{
if (isdigit(c))
{
num.append(1, c);
}
else if (num.length() > 0)
{
answer += stoi(num);
num = "";
}
}
if (num.length() > 0)
answer += stoi(num);
return answer;
}
하나씩 숫자로 변환해주지 않고 stream을 통한 계산도 가능하다.
1) 문자열 처음 문자부터 끝 문자까지 for문 수행
2) 문자가 숫자가 아닌 경우, 공백으로 치환
3) stream을 통해 split 후 각 값을 합으로 계산
#include <string>
#include <cctype>
#include <sstream>
using namespace std;
int solution(string my_string) {
for (char& c : my_string)
{
if (!isdigit(c))
c = ' ';
}
stringstream ss;
ss.str(my_string);
int tmp = 0;
int answer = 0;
while (ss)
{
answer += tmp;
ss >> tmp;
}
return answer;
}
* 연관 문제:
- [프로그래머스] 숨어있는 숫자의 덧셈 (1)
728x90
'Algorithm > Programers' 카테고리의 다른 글
공배수 (0) | 2023.06.24 |
---|---|
한 번만 등장한 문자 (0) | 2023.06.20 |
숨어있는 숫자의 덧셈 (1) (0) | 2023.06.18 |
OX퀴즈 (0) | 2023.06.18 |
컨트롤 제트 (0) | 2023.06.15 |
댓글