プログラマ(N表示)
質問する
コード#コード#
成功コード
class Solution {
private int staticN;
private int staticNum;
private int result = 9;
public void dfs(int cnt, int number){
if(staticNum == number || cnt > 8){
result = Math.min(result, cnt);
return;
}
int tmp = staticN;
for (int i = 0; i < 8 - cnt; i++) {
if(tmp > (staticN * staticNum)) return;
//불필요 탐색 제거
dfs(cnt + i + 1, number + tmp);
dfs(cnt + i + 1, number - tmp);
dfs(cnt + i + 1, number * tmp);
dfs(cnt + i + 1, number / tmp);
tmp += (staticN * Math.pow(10, i + 1));
}
}
public int solution(int N, int number) {
staticN = N;
staticNum = number;
dfs(0, 0);
return ((result == 9) ? -1 : result);
}
}
Reference
この問題について(プログラマ(N表示)), 我々は、より多くの情報をここで見つけました https://velog.io/@ohbk555/프로그래머스N으로-표현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol