본문 바로가기
Algorithm/Programers

OX퀴즈

by 꼬부기가우는소리 2023. 6. 18.
728x90

 

- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120907

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

입력된 수식이 맞는 수식이면 "O", 아니라면 "X"를 표출해주는 문제이다.

 

1) 입력받은 문자열을 공백(" ")을 기준으로 split

2) 나눠진 문자열의 두번째 항목(index == 1)이 "+" 인 경우, "-" 인 경우에 따라 각각 값 계산

3) 계산된 결과값이 입력받은 결과값과 일치하는지 확인

 

#include <string>
#include <vector>
#include <sstream>
using namespace std;

vector<string> split(string s, char check) {
    vector<string> vec_strings;
    stringstream ss(s);
    string temp;
 
    while (getline(ss, temp, check)) {
        vec_strings.push_back(temp);
    }
    
    return vec_strings;
}

vector<string> solution(vector<string> quiz) {
    vector<string> answer;
    for (string str : quiz)
    {
        vector<string> q = split(str, ' ');
        int a = stoi(q[0]);
        int b = stoi(q[2]);
        int result = stoi(q[4]);
        
        if (q[1] == "+")
            answer.push_back((a + b == result) ? "O" : "X");
        else
            answer.push_back((a - b == result) ? "O" : "X");
    }
    return answer;
}

 

아래의 경우, 굳이 vector에 저장하지 않고 바로 입력받아 확인해주는 방법도 있다.

 

#include <string>
#include <vector>
#include <sstream>
using namespace std;

vector<string> solution(vector<string> quiz) {
    vector<string> answer;
    for (string str : quiz)
    {
        stringstream ss(str);
        string a, b, oper, equal, result;
        ss >> a >> oper >> b >> equal >> result;

        if (oper == "+")
            answer.push_back((stoi(a) + stoi(b) == stoi(result)) ? "O" : "X");
        else
            answer.push_back((stoi(a) - stoi(b) == stoi(result)) ? "O" : "X");        
    }
    return answer;
}
728x90

'Algorithm > Programers' 카테고리의 다른 글

숨어있는 숫자의 덧셈 (2)  (0) 2023.06.18
숨어있는 숫자의 덧셈 (1)  (0) 2023.06.18
컨트롤 제트  (0) 2023.06.15
N개의 최소공배수  (0) 2023.06.12
배열 회전시키기  (0) 2023.06.08

댓글