관리 메뉴

100세까지 코딩

[프로그래머스] Lv0.OX퀴즈 본문

코딩테스트/자바

[프로그래머스] Lv0.OX퀴즈

100세까지 코딩 2023. 8. 18. 20:10
문제 설명

 

풀기 전 생각
  • 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()

 

[자바 공부] 형 변환 함수 차이 (parseXXX, valueOf, toString)

한눈에 정리 함수 설명 Integer.parseXXX() 기본 타입인 int 타입을 반환. Integer.valueOf() Integer 래퍼 객체를 반환. toString() 대상이 null이면 Null PointException(NPE)를 발생. String.valueOf() 대상이 null이면 문자열

sjd0219.tistory.com

2. split()을 사용한 이전 문제

 

[프로그래머스] 다항식 더하기 with java

문제 설명 풀기 전 생각 항과 연산기호 사이에 항상 공백이 존재하고 + 기호만 사용하니 " + "로 string을 split 하기 split 한 string 배열 중 x를 포함하면 x끼리 더하고 x를 포함하지 않으면 상수항끼리

sjd0219.tistory.com