알고리즘/프로그래머스 1단계

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

게임만드는학생 2023. 7. 23. 12:25

 https://programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

int solution(string b) {
    int answer = 0;
    int a,bc;
    char op;
    
    int s = b.find(' ');
    a = stoi(b.substr(0, s));
    op = b[s+1]; 
    bc= stoi(b.substr(s+3));
    
    if(op=='*')return a*bc;
    else if(op=='+')return a+bc;
    else return a-bc;
    return answer;
}

설명

string.find 와 string.substr, stoi

문자열로 주어진 식을 분해해서 읽기만 하면 아주 쉬운 문제이다. 

문자열을 분해하는데 string.find() 함수와 substr(), stoi함수를 사용하였다. 

 

string.find() 함수는 찾고자 하는 문자열의 시작부분의 인덱스를 반환해준다. 

그리고 string.substr() 함수는 첫번째 인자로 부분문자열의 시작위치, 두번째 인자로는 부분문자열의 길이를 받는다. 

따라서 0부터 ' ' 위치 -1 까지의 문자열을 잘라내면 첫번째 숫자를 문자열로 얻을 수 있다. 

 

마찬가지로 공백 2개와 연산자를 건너뛰고 두번째 숫자를 얻기위해 s에서 +3을 더한 곳에서부터 부분문자열을 만들면

두번째 숫자를 얻게된다.