본문 바로가기
::public/코딩테스트 풀이

OX퀴즈 - 문자열 파싱

by 해맑은욱 2023. 8. 8.

#include <sstream> 과 istringstream 에 대해 더 찾아보고 공부하자. 

>> 연산자를 사용해 정해진 타입에 대한 파싱이 가능!

 

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

using namespace std;

vector<string> solution(vector<string> quiz) {
    vector<string> answer;
    
    // quiz = ["3 - 4 = -3", "5 + 6 = 11"] / result = ["X", "O"]
    for(auto& q : quiz)
    {
        istringstream iss(q);
        char separator = ' ';

        vector<string> vs;
        string strBuff;
        while (getline(iss, strBuff, separator)) 
        {
            // separator을 구분자로 strBuff에 문자열을 파싱한다.
            vs.emplace_back(strBuff);
        }

	// vector(FILO)를 이용하기 위해 뒤집는다.
        reverse(vs.begin(), vs.end());

        int result = 0;
        while (!vs.empty())
        {
            if(vs.back() == "+")
            {
                vs.pop_back();
                result += stoi(vs.back());
            }
            else if((vs.back() == "-"))
            {
                vs.pop_back();
                result -= stoi(vs.back());
            }
            else if((vs.back() == "="))
            {
                vs.pop_back();
                result == stoi(vs.back()) ? answer.emplace_back("O") : answer.emplace_back("X");
            }
            else
            {
                result = stoi(vs.back());
            }
            vs.pop_back();
        }
    }
    
    return answer;
}

 

'::public > 코딩테스트 풀이' 카테고리의 다른 글

피보나치 수  (0) 2023.08.12
문자열 밀기  (0) 2023.08.08
손익분기점  (0) 2019.11.09
다이얼  (0) 2019.11.09
상수  (0) 2019.11.09