본문 바로가기
Algorithm/Programers

숨어있는 숫자의 덧셈 (2)

by 꼬부기가우는소리 2023. 6. 18.
728x90

 

- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120864

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

"숨어있는 숫자의 덧셈 (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)

'Algorithm > Programers' 카테고리의 다른 글

공배수  (0) 2023.06.24
한 번만 등장한 문자  (0) 2023.06.20
숨어있는 숫자의 덧셈 (1)  (0) 2023.06.18
OX퀴즈  (0) 2023.06.18
컨트롤 제트  (0) 2023.06.15

댓글