Coding History

2024. 06. 24 문제풀이

BlackBirdIT 2024. 6. 24. 18:57

의외로 빨리 해결해서 문제 풀이를 올려본다.

public class Calc {
    public static int run(String exp) {

        exp = exp.replace("- ", "+ -");


        String[] bits = exp.split(" \\+ ");

        int a = 0;
        String b;
        for (int i = 0; i < bits.length; i++) {
            b = bits[i];
            a = Integer.parseInt(b);
            a++;
        }
        return a;
//        throw new RuntimeException("해석불가 : 올바른 식이 필요해.");
    }
} //오답, a를 인트로 변환해서 더해지는 줄 알았는데 결과 값이 식의 마지막 수만 저장하는 것을 알게됨.
public class CalcTests {
    @Test
    @DisplayName("1 + 1 == 2")
    void t1() {
        assertThat(Calc.run("1 + 1")).isEqualTo(2);
    }

    @Test
    @DisplayName("2 + 1 == 2")
    void t2() {
        assertThat(Calc.run("2 + 1")).isEqualTo(3);
    }

    @Test
    @DisplayName("2 + 2 == 2")
    void t3() {
        assertThat(Calc.run("2 + 2")).isEqualTo(4);
    }

    @Test
    @DisplayName("50 - 30 == 20")
    void t4() {
        assertThat(Calc.run("50 - 30")).isEqualTo(20);
    }

    @Test
    @DisplayName("100 - 30 == 70")
    void t5() {
        assertThat(Calc.run("100 - 30")).isEqualTo(70);
    }

    @Test
    @DisplayName("10 + 20 + 30 == 60")
    void t6() {
        assertThat(Calc.run("10 + 20 + 30")).isEqualTo(60);
    }

    @Test
    @DisplayName("10 - 20 + 30 == 20")
    void t7() {
        assertThat(Calc.run("10 - 20 + 30")).isEqualTo(20);
    }

    @Test
    @DisplayName("10 - 10 - 10 - 10 + 10 + 10 - 10 == -10")
    void t8() {
        assertThat(Calc.run("10 - 10 - 10 - 10 + 10 + 10 - 10")).isEqualTo(-10);
    }
}//테스트 케이스

이게 내가 통과해야할 테스트케이스.

public class Calc {
    public static int run(String exp) {

        exp = exp.replace("- ", "+ -");


        String[] bits = exp.split(" \\+ "); //이까지는 수업시간에 도저히 풀지 못하던 구간이였다.

        int rs = 0; //합을 저장할 변수 선언.

        for (String bit : bits) { //bits 배열을 순회
            rs += Integer.parseInt(bit); // 순회하면서 값들을 int로 전환 시키며 더함.
        }

        return rs; // 리턴값 rs.
//        throw new RuntimeException("해석불가 : 올바른 식이 필요해.");
    }
}

배웠던 데이터 순회 반복문을 활용했음.(향상된 for문)

결과를 구한 방법은 주석으로 달아놨다.

오늘 밤새고 수업 들으러 왔는데 용케 안졸고 블로그 포스팅까지 무사히 마쳤다..

계속 공부하면서 기초가 아직 부족하다는 것과 내 영타가 생각보다 많이 느리다는 것을 통감하고 기초부터 조금 더 다지기로 결심했다. 자바 입문 반복과 영타 연습을 일단 주로 할 생각이다. 블로그 포스팅도 꾸준히!!