[프로그래머스/C++]Lv.0 - 문자열 계산하기

YH J·2023년 4월 21일
0

프로그래머스

목록 보기
68/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/120902

시도한 방법

stringstream을 알게되었으므로 stringstream으로 파싱하였다. 처음 숫자를 빼면 그 뒤로는 연산자 숫자 의 반복이므로 첫 숫자만 따로 파싱 후 while문으로 파싱하였다.

내 코드

#include <string>
#include <vector>
#include <sstream>


using namespace std;

int solution(string my_string) {
    int answer = 0;
    
    stringstream ss(my_string);
    ss >> answer;
    while(ss)
    {
        string o;
        int b;
        ss >> o >> b;
        if(o == "+")
            answer += b;
        else if(o == "-")
            answer -= b;
    }
    return answer;
}

다른 사람의 풀이

#include <string>
#include <vector>
#include <sstream>


using namespace std;

int solution(string my_string) {
    int answer = 0;
    
    stringstream stream;
    stream.str(my_string);
    
    vector<int> a;
    int b;
    vector<string> c;
    string d;
    stream >> b;
    answer += b;
    
    while(stream)
    {
        stream >> d;
        stream >> b;
        a.push_back(b);
        c.push_back(d);
        d.clear();
        b = 0;
    }
    
    for(int i = 0; i < a.size(); i++)
    {
        if(c[i] == "+")
            answer += a[i];
        else if(c[i] == "-")
            answer -= a[i];
    }
    
    return answer;
}

다른 사람의 풀이 해석

파싱하면서 숫자와 연산자를 vector에 담아놓고 전부 파싱한 뒤 계산하였다.

profile
게임 개발자 지망생

0개의 댓글