https://programmers.co.kr/learn/courses/30/lessons/42895

 

코딩테스트 연습 - N으로 표현

 

programmers.co.kr

문제풀이
  • dfs를 통해 모든 경우의 수를 탐색
    • Number가 5,55,555 증가하는 연산
int tmpN = 0;
tmpN = tmpN * 10 + N;
코드
class Solution {
       int answer;
    public int solution(int N, int number) {
        //모든 최솟값이 8보다 커서 dfs가 return 되는 경우는 답이 -1
        answer = -1;
        
         DFS(N, number, 0, 0);
        
        return answer;
    }
    
    public void DFS(int N, int number, int sum, int count){
        if(count > 8) return;
        
        if(sum == number){
            if(count < answer || answer == -1) answer = count;
            return;
        }
        //새로운 DFS를 탈 때 tmpN을 초기화시켜줌으로써 N, NN, NNN 등을 탐색할 수 있다
        int tmpN = 0;
        for(int i=1; i<9; i++){
            tmpN = tmpN*10 + N;
            DFS(N, number, sum+tmpN, count+i);
            DFS(N, number, sum-tmpN, count+i);
            DFS(N, number, sum*tmpN, count+i);
            DFS(N, number, sum/tmpN, count+i);
        }
        
    }
}

'Algorithm > ***Algorithm Java' 카테고리의 다른 글

백준_1303_전투  (0) 2022.03.16
[백준] 1062_가르침  (0) 2022.03.01
[백준]7576_토마토(bfs/dfs)  (0) 2022.02.23
[백준] 15684_사다리 조작(DFS) java  (0) 2022.02.23
백준_17090_미로탈출하기  (0) 2022.02.16

+ Recent posts