https://programmers.co.kr/learn/courses/30/lessons/42895
문제풀이
- 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 |