반응형
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
끝
반응형
'c++ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 접미사인지 확인하기(c++) (2) | 2024.01.28 |
---|---|
[프로그래머스] 접두사인지 확인하기(c++) (2) | 2024.01.27 |
[프로그래머스] 세 개의 구분자(c++) (2) | 2024.01.13 |
[프로그래머스] 공백으로 구분하기 2(c++) (0) | 2024.01.13 |
[프로그래머스] 두 수의 합(c++) (0) | 2024.01.13 |