public class ExpressionN {
private int answer = -1;
public int solution(int N, int number) {
dfs(N, 0, 0, number);
return answer;
}
private void dfs(int n, int nCount, int via, int number) {
if (nCount > 8)
return;
if (via == number) {
answer = answer == -1 ? nCount : Math.min(answer, nCount);
return;
}
int nn = 0;
for (int i = 1; i <= 8; i++) {
nn = nn * 10 + n;
dfs(n, nCount + i, via + nn, number);
dfs(n, nCount + i, via - nn, number);
dfs(n, nCount + i, via * nn, number);
dfs(n, nCount + i, via / nn, number);
}
}
}
- DFS로 해결가능(단, TC 통과 못하는 경우 있음...)