Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.28 KB

boj_14888.md

File metadata and controls

49 lines (37 loc) · 1.28 KB

(백준) : 14888번 연산자 끼워넣기


img.png img_1.png

백트래킹 문제
접근 방법
  • 연산자의 개수가 담겨 있는 배열,숫자가 담긴 배열 선언
private static void dfs(int num, int idx){

        if(idx == n){ //호출끝
            max = Math.max(max,num);
            min = Math.min(min,num);
            return;
        }

        for(int i = 0; i< 4 ; i++){
            if(op[i] > 0) {
                op[i] --;
                if (i == 0) {
                    dfs(num + number[idx], idx+1);
                } else if (i == 1) {
                    dfs(num - number[idx], idx+1);
                } else if (i == 2) {
                    dfs(num * number[idx], idx+1);
                } else if (i == 3) {
                    dfs(num / number[idx], idx+1);
                }
                op[i] ++;
            }

        }
    }
  • 반복문안에서 재귀호출을 통하여 max값과 min값을 찾음
  • 해당 연산자의 개수가 0이상일때 해당 연산자의 개수를 1감소시키고 재귀호출
  • 호출이 증가할때마다 idx에 idx+1값을 넘겨줌
  • 재귀 호출이 끝나면 해당 연사자의 개수 다시 1증가
전체 코드