[C++] 프로그래머스 간단한 식 계산하기

문제설명

문자열 binomial이 매개변수로 주어집니다.
binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수,
op는 '+', '-', '*' 중 하나입니다.
주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.


제한사항

• 0 ≤ a, b ≤ 40,000
• 0을 제외하고 a, b는 0으로 시작하지 않습니다.


입출력 예

binomial result
“43 + 12” 55
“0 - 7777” -7777
“40000 * 40000” 1600000000


풀이

bionomial 문자열을 공백을 기준으로 나누기 위해 split 함수를 만들어 문자열을 분리하고, 연산자에 맞게 연산하는 로직을 구현하여 문제를 풀 수 있었습니다.

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

using namespace std;

vector<string> split(string str, char Delimiter)
{
    istringstream iss(str);
    string buffer;

    vector<string> result;

    while(getline(iss, buffer, Delimiter))
    {
        result.push_back(buffer);
    }
 
    return result;
}

int solution(string binomial) {
    int answer = 0;
    vector<string> arr;
    
    arr = split(binomial, ' ');
    
    int a = stoi(arr[0]);
    int b = stoi(arr[2]);
    string op = arr[1];
    
    if(op == "+")
        answer = a + b;
    else if(op == "-")
        answer = a - b;
    else
        answer = a * b;
    
    return answer;
}


결과

코드 실행결과

Categories:

Updated:

Leave a comment