Post

[Programmers] 120907번 - OX퀴즈 [Java][C++]

[Programmers] 120907번 - OX퀴즈 [Java][C++]

문제 링크


1. 아이디어

문자열로 주어진 수식이 옳은지 틀린지 판단하는 문제로 X, 연산자, Y, Z를 파싱해낸 후 수식을 계산하면 된다.


2. 복잡도

시간복잡도공간복잡도
$O(Q)$$O(1)$

Q = quiz 길이(퀴즈 개수)


3. 코드

풀이 [Java][C++]

StringTokenizer를 활용해 공백을 기준으로 토큰들로 파싱해서 수식을 계산해주었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

class Solution {
    public String[] solution(String[] quiz) {
        String[] ans = new String[quiz.length];
        for (int i = 0; i < quiz.length; i++) {
            StringTokenizer st = new StringTokenizer(quiz[i]);

            int x = Integer.parseInt(st.nextToken());
            String op = st.nextToken();
            int y = Integer.parseInt(st.nextToken());
            st.nextToken();
            int z = Integer.parseInt(st.nextToken());

            if (op.equals("+")) {
                ans[i] = x + y == z ? "O" : "X";
            } else {
                ans[i] = x - y == z ? "O" : "X";
            }
        }

        return ans;
    }
}

stringstream를 활용해 공백을 기준으로 토큰들로 파싱해서 수식을 계산해주었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;

vector<string> solution(vector<string> quiz) {
    vector<string> v(quiz.size());
    for (int i = 0; i < quiz.size(); i++) {
        stringstream ss(quiz[i]);
        int x, y, z;
        char op, eq;
        ss >> x >> op >> y >> eq >> z;

        if (op == '+') {
            v[i] = x + y == z ? "O" : "X";
        } else if (op == '-') {
            v[i] = x - y == z ? "O" : "X";
        }
    }

    return v;
}

This post is licensed under CC BY 4.0 by the author.