문제
https://school.programmers.co.kr/learn/courses/30/lessons/42895
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
N을 i번 반복하여 만든 숫자를 먼저 dp[i]에 추가합니다. 예를 들어, N = 5이고 i = 3이라면 555라는 숫자를 추가
두 개의 작은 집합을 결합하여 새로운 숫자를 만들어냄. 예를 들어, dp[2]에서 55와 dp[1]에서 5를 이용해 dp[3]에서 555, 50, 275 등을 만든다
import java.util.*;
class Solution {
public int solution(int N, int number) {
if (N == number) {
return 1;
}
List<Set<Integer>> dp = new ArrayList<>();
for (int i = 0; i <= 8; i++) {
dp.add(new HashSet<>());
}
dp.get(1).add(N);
for (int i = 2; i <= 8; i++) {
int baseNum = Integer.parseInt(String.valueOf(N).repeat(i));
dp.get(i).add(baseNum);
for (int j = 1; j < i; j++) {
for (int num1 : dp.get(j)) {
for (int num2 : dp.get(i - j)) {
dp.get(i).add(num1 + num2);
dp.get(i).add(num1 - num2);
dp.get(i).add(num1 * num2);
if (num2 != 0) {
dp.get(i).add(num1 / num2);
}
}
}
}
if (dp.get(i).contains(number)) {
return i;
}
}
return -1;
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 연속 펄스 부분 수열의 합 - Java (1) | 2024.09.09 |
---|---|
[프로그래머스] 호텔 방 배정 - Java (0) | 2024.09.03 |
[프로그래머스] 보행자 천국 - Java (2) | 2024.09.01 |
[프로그래머스] 풍선 터트리기 - Java (0) | 2024.09.01 |
[프로그래머스] 코딩 테스트 공부 - Java (0) | 2024.08.31 |