[프로그래머스] N으로 표현 JAVA

AMUD·2022년 8월 8일
0

Algorithm

목록 보기
24/78

문제

문제링크

접근

  • 재귀 구현은 항상 조금씩 애를 먹는 것 같다.
  • 사칙연산의 모든 경우의 수를 탐색한다고 생각하면 구조를 이해하기 쉬워지다.

소스 코드

class Main {
    public static void main(String[] args) throws Exception {
        int N = 5;
        int number = 2;

        Solution sol = new Solution();
        System.out.println("result : " + sol.solution(N, number));
    }
}

class Solution {
    int answer = 9;
    int N = -1;
    int number = -1;

    public int solution(int N1, int number1) {
        N = N1;
        number = number1;

        cal(0, 0);
        return answer<9?answer:-1;
    }

    public void cal(int cnt, int currNum){
        if(currNum == number){
            answer = cnt;
            return;

        }
        else if(cnt >= answer) return;
         else {
            int op = N;
            for(int i = 0; i<8-cnt; i++ ) {
                cal(cnt+1+i, currNum+op);
                cal(cnt+1+i, currNum-op);
                cal(cnt+1+i, currNum*op);
                cal(cnt+1+i, currNum/op);

                op = (op*10)+N;
            }
        }
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글