15일차(다항식 계산기 3)

지현·2024년 1월 4일

[다항식 계산기 만들기 3]

< (10 + 20) * 3 >

  • 내가 고친부분
return needToPlus.sum * rs;
  • 정답(고쳐야할부분)

<"-("으로 시작하는 문제_ 패턴 바꿔 풀기>

-(10 + 5) => (10 + 5) * -1
  1. startsWith 함수 활용해서 -로 시작하는지 보기
if(exp.startsWith("-")= false) return false;
  1. 음수괄호("-()") 패턴이면 기존에 갖고있던 해석 패턴과 맞지 않으니 패턴 변경
if (isNegativeCaseBracket(exp)) {
      exp = exp.substring(1) + " * -1";

< if(bracketCount) >

private static int findSplitPointIndexBy(String exp, char findChar) {
    int bracketCount = 0;

    for (int i = 0; i < exp.length(); i++) {
      char c = exp.charAt(i);

      if (c == '(') {
        bracketCount++;
      } else if (c == ')') {
        bracketCount--;
      } else if (c == findChar) {
        if (bracketCount == 0) return i;
      }
    }
    return -1;
  }
 else if (c == findChar) {
        if (bracketCount == 0) return i;
  • 괄호 없는거..?말하는 건가..?

< 변수.substring >

  • 자르기
  // 음수괄호 패턴이면, 기존에 갖고있던 해석 패턴과는 맞지 않으니 패턴을 변경
    int[] pos = null;
    while ((pos = findNegativeCaseBracket(exp)) != null) {
      exp = changeNegativeBracket(exp, pos[0], pos[1]);

<마이너스, 괄호로 시작하는 다항식 풀기>

-(10+5) == -15

  • 추가해야 할 함수
    -isNegativeCaseBracket('-('로 시작하는지를 검증하는 함수)
private static boolean isNegativeCaseBracket(String exp) {
    if (exp.startsWith("-(") == false) return false;

    int bracketCount = 0;

    for(int i = 0; i < exp.length(); i++) {
      char c = exp.charAt(i);

      if (c == '(') {
        bracketCount++;
      } else if (c == ')') {
        bracketCount--;
      }
      if (bracketCount == 0){
        if(exp.length() -1 ==i) return true;
      }

    }
    return false;
  }

-isNegativeCaseBracket 가 참이면 식의 패턴을 바꾸는 조건식

 if(isNegativeCaseBracket (exp)){
      exp = exp.substring(1) + "* -1";
    }

git clone

https://m.blog.naver.com/zzang9ha/222039898629

git checkout

https://heytech.tistory.com/287

profile
자바는 내 아가 ♡

0개의 댓글