728x90
300x250
#include <string>
#include <vector>
#include <cstring>
#include <string>
using namespace std;
vector<string> split(string str, string div)
{
vector<string> vStr;
int nStart = 0;
int nEnd = str.find(div);
while(nEnd != -1)
{
vStr.push_back(str.substr(nStart, nEnd - nStart));
nStart = nEnd + 1;
nEnd = str.find(div, nStart);
}
vStr.push_back(str.substr(nStart, nEnd - nStart));
return vStr;
}
vector<string> solution(vector<string> quiz) {
vector<string> answer, strResultList;
for(auto i : quiz)
{
bool bPlus = false;
int nA, nB, nResult;
strResultList = split(i, " ");
for(int j = 0; j < strResultList.size(); j++)
{
switch(j)
{
case 0:
nA = stoi(strResultList[j]);
break;
case 1:
bPlus = strResultList[j] == "+";
break;
case 2:
nB = stoi(strResultList[j]);
break;
case 4:
nResult = stoi(strResultList[j]);
break;
}
}
if (bPlus)
{
if (nA + nB == nResult)
answer.push_back("O");
else
answer.push_back("X");
}
else
{
if (nA - nB == nResult)
answer.push_back("O");
else
answer.push_back("X");
}
}
return answer;
}
이번 문제의 핵심은 공백을 이용한 문자 나누기가 핵심인 것 같다.
나는 그냥 split 함수 만들어서 " "를 기준으로 문자를 나눠 vector에 저장하고,
for문 돌려서 값 계산으로 처리했다.
대부분 비슷한 방식으로 했겠지만,
보니깐 stringstream이라는게 있는 것 같았다.
(stringstream을 사용한 답 stringstream 공부 (tistory.com))
그래서 이 부분은 좀 공부를 해보려 한다.
공부할 부분은 따로 카테고리 만들어서 정리하는 게 좋을 것 같다.
728x90
반응형
'C, C++ > 코딩테스트 입문 난이도' 카테고리의 다른 글
프로그래머스 코딩테스트 입문 난이도 - 최빈값 구하기 (0) | 2023.06.27 |
---|---|
프로그래머스 코딩테스트 입문 난이도 - 문자열안에 문자열 (0) | 2023.06.27 |
프로그래머스 코딩테스트 입문 난이도 - 제곱수 판별하기 (0) | 2023.06.27 |
프로그래머스 코딩테스트 입문 난이도 - 세균 증식 (0) | 2023.06.27 |
프로그래머스 코딩테스트 입문 난이도 - 문자열 정렬하기(2) (0) | 2023.06.27 |