728x90
import java.util.*;
class Solution {
public int solution(int N, int number) {
int solution = -1;
ArrayList<HashSet<Integer>> list = new ArrayList<>();
for(int i=0;i<9;i++) {
list.add(new HashSet<Integer>());
}
list.get(1).add(N);
if(number==N) return 1;
int temp = 0;
for(int i=2;i<9;i++) {
//N을 i번 썼을 때 만들 수 있는 숫자 집합
HashSet<Integer> set = list.get(i);
//N으로 구성된 i자리의 수
temp = Integer.parseInt(String.valueOf(N).repeat(i));
set.add(temp);
//사칙연산
for(int j=1;j<i;j++) {
HashSet<Integer> preSet = list.get(j);
HashSet<Integer> postSet = list.get(i-j);
for(int pre: preSet) {
for(int post: postSet) {
set.add(pre+post);
set.add(pre-post);
set.add(pre*post);
if(pre!=0 && post!=0) {
set.add(pre/post);
}
}
}
}
//number를 만들었으면 N 사용 횟수(i) 리턴
if(set.contains(number)) return i;
}
return solution;
}
}
String.valueOf(num): num숫자를 String으로 반환한다.
String.valueOf(num).repeat(i): i번 string을 반복한다.
HashSet.contains(num): HashSet에 num이 있는지 없는지 리턴
728x90
'공부 > Algorithms w.Java' 카테고리의 다른 글
프로그래머스 - 단어 변환; Java (0) | 2023.06.29 |
---|---|
프로그래머스-정수 삼각형; Java (0) | 2023.06.29 |
프로그래머스 - 타겟 넘버; Java (0) | 2023.06.27 |
[Java] 백준 9934 - 완전 이진 트리 (0) | 2022.11.10 |
백준 2098 - 외판원 순회; Java (0) | 2022.04.11 |