프론트엔드 과정에서 그룹스터디를 진행하는데 나는 코딩테스트 연습 그룹에 들어갔다.
앞으로 주기적으로 코딩테스트 문제를 풀고 이를 블로그에 올려서 설명 후 조원들끼리 이를 보고 토의하는 식으로 스터디가 진행될 예정이다.
이번에 푼 문제는 OX퀴즈이다.
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예 #1
입출력 예 #2
"숫자, 연산자, 숫자, 연산자, 숫자" 라는 규칙이 있기 때문에 문자열에서 자료형에 맞는 정보를 꺼낼 수 있는 stringstream 함수를 이용한다.
연산자 '='을 기준으로 왼쪽의 계산된 숫자와 오른쪽의 숫자가 같으면 O, 다르면 X가 저장될 수 있도록 코드를 작성한다.
위의 과정을 입력된 수식만큼 반복한다.
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> quiz) {
vector<string> answer;
for (int i = 0; i < quiz.size(); i++) {
string a = quiz[i];
a.erase(remove(a.begin(), a.end(), ' '), a.end());
int answer1 = 0;
int answer2 = 0;
stringstream b(a);
b >> answer1;
int n;
char c;
while (b >> c >> n) {
if (c == '+') answer1 += n;
else if (c == '-') answer1 -= n;
else answer2 = n;
}
if (answer1 == answer2) answer.push_back("O");
else answer.push_back("X");
}
return answer;
}