11import java .util .*;
22
33class Solution {
4+ HashSet <Integer > set = new HashSet <>();
5+ ArrayList <HashSet <Integer >> dp = new ArrayList <>();
46
57 public int solution (int N , int number ) {
6- ArrayList <Set <Integer >> dp = new ArrayList <>();
78
8- // 1~8까지만
9- for (int i = 0 ; i < 9 ; i ++){
10- dp .add (new HashSet <>());
9+ for (int i = 0 ; i < 9 ; i ++){
10+ dp .add (new HashSet <>());
1111 }
12- for (int i = 1 ; i < 9 ;i ++){
12+
13+ for (int i = 1 ; i < 9 ; i ++){
1314 Set <Integer > currentSet = dp .get (i );
1415
15- StringBuilder stringBuilder = new StringBuilder ();
16- // N을 이어 붙이기
17- for (int j = 0 ; j < i ;j ++){
18- stringBuilder .append (N );
16+ StringBuilder sb = new StringBuilder ();
17+
18+ // 이어 붙이기
19+ for (int j = 0 ; j < i ; j ++){
20+ sb .append (N );
1921 }
20- currentSet .add (Integer .parseInt (stringBuilder .toString ()));
22+ currentSet .add (Integer .parseInt (sb .toString ()));
2123
22- // 사칙연산을 통해 추가
23- for (int j = 1 ;j < i ; j ++){
24- int k = i - j ;
25-
26- Set <Integer > setK = dp .get (k );
24+ // 사칙연산
25+ for (int j = 0 ; j < i ; j ++){
2726 Set <Integer > setJ = dp .get (j );
27+ Set <Integer > setK = dp .get (i -j );
2828
29- for (int num1 : setK ){
30- for (int num2 : setJ ) {
29+ for (int num1 : setJ ){
30+ for (int num2 : setK ) {
3131 currentSet .add (num1 + num2 );
3232 currentSet .add (num1 - num2 );
3333 currentSet .add (num1 * num2 );
34- if (num2 != 0 ){
35- currentSet .add (num1 / num2 );
36- }
34+ if (num2 != 0 ) currentSet .add (num1 / num2 );
3735 }
3836 }
3937 }
4038
41- // dp에서 number를 찾아서 반환
42- if (currentSet .contains (number )){
43- return i ;
44- }
39+ if (currentSet .contains (number )) return i ;
40+
4541 }
46-
4742 return -1 ;
4843 }
49-
5044}
0 commit comments