100세까지 코딩
[프로그래머스] Lv0.OX퀴즈 본문
문제 설명
풀기 전 생각
- quiz배열을 순회하면서 공백을 기준으로 수식을 자른것을 새로운 배열(formula)에 넣기
- formula 배열에서 수식 부분을 + , - 인지 확인
- 만약 +이면 string의 숫자를 int로 바꿔 덧셈을 하고 결과 확인 후 맞으면 O, 틀리면 X
- -일때도 동일
class Solution {
public String[] solution(String[] quiz) {
String[] answer = new String[quiz.length]; // 답변 배열은 퀴즈만큼의 길이
for(int i = 0 ; i < quiz.length;i++){
String[] formula = quiz[i].split(" "); // 공백을 기준으로 수식을 자르기
if(formula[1].equals("+")){ // 기호 부분에 해당하는 것이 +면
if(Integer.valueOf(formula[0])+Integer.valueOf(formula[2]) == Integer.valueOf(formula[4])){
// String을 int로 바꿔 a+b = c 검사
answer[i] = "O"; // 맞으면 O
}else{
answer[i] = "X"; // 틀리면 X
}
}else if(formula[1].equals("-")){ // 기호 부분에 해당하는 것이 -면
if(Integer.valueOf(formula[0])-Integer.valueOf(formula[2]) == Integer.valueOf(formula[4])){
// String을 int로 바꿔 a-b = c 검사
answer[i] = "O"; // 맞으면 O
}else{
answer[i] = "X"; // 틀리면 X
}
}
}
return answer;
}
오류 및 개선
- 오류없이 통과했지만 가독성 있는 코드를 소개
가독성 코드
class Solution {
public String[] solution(String[] quiz) {
for(int i=0; i<quiz.length; i++){
String[] text = quiz[i].split(" ");
int result = Integer.parseInt(text[0]) + ( Integer.parseInt(text[2]) * ( text[1].equals("+") ? 1:-1) );
// +면 +1을 곱해서 더하고 -면 -1을 곱해서 앞에 수와 더한다
quiz[i] = result == Integer.parseInt(text[4])? "O": "X";
// 결과값이 result와 같으면 O, 아니면 X
}
return quiz;
}
}
참고
1. String to int 방법 : 1. Integer.parseInt() 2. Integer.valueOf()
2. split()을 사용한 이전 문제
'코딩테스트 > 자바' 카테고리의 다른 글
[프로그래머스] Lv0.주사위 게임 (0) | 2023.08.26 |
---|---|
[프로그래머스] Lv0.정수를 나선형으로 배치하기 (0) | 2023.08.25 |
[프로그래머스] Lv0.유한소수 판별하기 (0) | 2023.08.18 |
[프로그래머스] Lv0.최빈값 구하기 (0) | 2023.08.17 |
[프로그래머스] Lv0.문자열 밀기 (0) | 2023.08.16 |