본문 바로가기
c++/프로그래머스

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

by ilp 2024. 1. 23.
반응형

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

 

프로그래머스

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

programmers.co.kr



#include <string>
#include <vector>

using namespace std;

string calculate(string a1,string b1,char op){
    int a=stoi(a1);
    int b=stoi(b1);
    if(op=='+'){
        return to_string(a+b);
    }
    else if(op=='-'){
        return to_string(a-b);
    }
    else if(op=='*'){
        return to_string(a*b);
    }
    else if(op=='/'){
        return to_string(a/b);
    }
    return to_string(-1);
}

int solution(string binomial) {
    string answer;
    string temp;
    char a;
    for(int i=0;i<binomial.size();i++){
        if(calculate("-1","-1",binomial[i])!="-1"){
            answer=temp;
            a=binomial[i];
            temp="";
        }
        else{
            temp+=binomial[i];
        }
    }
    
    return stoi(calculate(answer,temp,a));
}

1. 'calculate' 함수

  • 이 함수는 3개의 매개변수를 받는다. 
    두개의 문자열('a1', 'b1'), 그리고 하나의 문자('op')
    'a1'과 'b1'은 정수를 나타내는 문자열이고, 'op'는 연산자(+,-,+,/)를 나타낸다.
  • 'a1'과 'b1'을 정수로 바꾸어('stoi' 함수사용) 각각 정수변수 'a'와 'b'에 저장해준다.
    그리고 'op'값에 따라 해당하는 연산을 수행한다.
  • 결과는 문자열로 반환된다. 
    만약 'op'가 지원되지 않는 연산자이면, 함수는 "-1"을 문자열로 반환한다.

2. 'solution' 함수

  • 이 함수는 하나의 문자열 매개변수 'binmial'을 받는다.
    이 문자열은 두개의 정수와 한개의 연산자로 이루어진 단항식을 나타낸다.
    (예: "3+4")
  • 'answer':연산자 이전의 숫자를 저장하는 문자열이다.
    'temp': 연산자 이전의 숫자를 임시로 저장하고, 그 후 연산자 이후의 숫자를 저장하는 문자열이다.
    'a':연산자를 저장하는 문자열이다.

  • 함수는 문자열을 순회하면서 각 문자를 검사한다.
    'calculate' 함수를 사용하여 연산자가 발견되었을 때 결과를 계산한다.
  • 연산자가 발견되기 전까지의 문자열을 첫번째 수를 나타내고,
    연산자 이후의 문자열은 두번째 수를 나타낸다.
  • 연산 결과는 'stoi'함수를 사용하여 정수로 변환되어 반환한다.

 

 

참고

일단 문제를 많이 어렵게 푼것 같다

 

그리고 'solution'함수에서 설명을 조금 추가한다.
if(calculate("-1","-1",binomial[i])!="-1")
 
이런 if문이 있었다.

'calculate'에 -1, -1을 넣은건 아무상관 없다 그냥 넣은 것이다.

 

이 조건문이 참이면 'calculate'가 "-1"이 나닌 다른 문자열을 반환했다는 것이고

그뜻은' op'가 +,-,/,* 중에 하나라는 것이다.

조건문이 거짓이면 'binomial[i]'가 숫자라는 뜻이다.

 

 

'stoi' : 문자열를 정수로

'stof' : 문자열를 float로

'stol' : 문자열을 long으로

'stod' 문자열을 double 


 
반응형