분리된 문자열은 Integer 클래스의 parseInt 메서드를 이용하여 숫자로 된 문자열을 정수로 변환해줍니다.
여기서 숫자의 위치를 알 수 있는 방법은 quiz 원소의 형태가 정수,공백,연산기호,공백,정수,공백,연산기호,공백,정수 이러한 형태이기 때문에 split을 나눠진 문자열에서 인덱스 0, 2, 4번이 정수임을 알 수 있습니다.
이렇게 정수로 변환된 문자열은 first 변수에 인덱스 0번 원소를 second 변수에 인덱스 2번 원소, third 변수에는 4번 원소를 저장해줍니다.
이제 if문을 이용하여 quiz의 원소가 성립하는 수식인지 확인하려고 합니다.
if문의 조건으로 contains 메서드를 이용하여 quiz의 원소가 공백+공백 이면 first + second == thrid가 일치하는지 또는 quiz의 원소가 공백-공백이면 first - second == third가 일치하는지를 확인합니다. (contains로 찾는 문자에서 공백연산기호공백인 이유는 정수부분이 음수일 수 있기 때문입니다.)
true이면 answer 배열에 문자열 O를 false이면 answer 배열에 문자열 X를 넣어주면 해결할 수 있습니다.
package com.example.codingtest;
import java.util.Arrays;
public class OX퀴즈 {
public static void main(String[] args) {
/*
문자열 배열 quiz가 매개변수로 주어집니다.
quiz에는 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있습니다.
수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은
배열을 출력하는 문제입니다.
제한 사항
- 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다.
단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
- 1 ≤ quiz의 길이 ≤ 10
- X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며,
각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
- X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
- -10,000 ≤ X, Y ≤ 10,000
- -20,000 ≤ Z ≤ 20,000
- [연산자]는 + 와 - 중 하나입니다.
입출력 예
quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]
입출력 예 설명
#1
3 - 4 = -3 은 틀린 수식이므로 "X",
5 + 6 = 11 은 옳은 수식이므로 "O" 입니다.
따라서 ["X", "O"]를 return합니다.
#2
19 - 6 = 13 은 옳은 수식이므로 "O",
5 + 66 = 71 은 옳은 수식이므로 "O",
5 - 15 = 63 은 틀린 수식이므로 "X",
3 - 1 = 2는 옳은 수식이므로 "O"
따라서 ["O", "O", "X", "O"]를 return합니다.
*/
String[] quiz = {"19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"};
String[] answer = new String[quiz.length];
for (int i = 0; i < quiz.length; i++) {
String[] str = quiz[i].split(" ");
int first = Integer.parseInt(str[0]);
int second = Integer.parseInt(str[2]);
int third = Integer.parseInt(str[4]);
if ((quiz[i].contains(" + ") && first + second == third) ||
(quiz[i].contains(" - ") && first - second == third)) {
answer[i] = "O";
} else {
answer[i] = "X";
}
}
System.out.println(Arrays.toString(answer));
}
}
프로그래머스 코드
class Solution {
public String[] solution(String[] quiz) {
String[] answer = new String[quiz.length];
for (int i = 0; i < quiz.length; i++) {
String[] str = quiz[i].split(" ");
int first = Integer.parseInt(str[0]);
int second = Integer.parseInt(str[2]);
int third = Integer.parseInt(str[4]);
if ((quiz[i].contains(" + ") && first + second == third) ||
(quiz[i].contains(" - ") && first - second == third)) {
answer[i] = "O";
} else {
answer[i] = "X";
}
}
return answer;
}
}