반응형
프로그래머스 - 숫자 변환하기 JAVA 풀이
문제 설명
자연수x
를 y
로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다.
x
에n
을 더합니다x
에 2를 곱합니다.x
에 3을 곱합니다.
자연수x
,y
,n
이 매개변수로 주어질 때,x
를y
로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때x
를y
로 만들 수 없다면 -1을 return 해주세요.
제한사항
- 1 ≤
x
≤y
≤ 1,000,000 - 1 ≤
n
<y
입출력 예
아이디어
- 브루트포스로는 시간초과
- bfs로 해결이 가능하지만 dp가 가장 적절한 해법인듯 하다
- 각 계산식 경우의 수 마다 비교해가면서 dp 배열 만들고 변환 불가처리만 주의하자
JAVA 풀이
class Solution {
public int solution(int x, int y, int n) {
int[] dp = new int[y + 1];
for (int i = x; i < y + 1; i++) {
if (i != x && dp[i] == 0) {
dp[i] = -1;
continue;
}
if (i * 2 <= y) {
if (dp[i * 2] == 0) {
dp[i * 2] = dp[i] + 1;
} else {
dp[i * 2] = Math.min(dp[i] + 1, dp[i * 2]);
}
}
if (i * 3 <= y) {
if (dp[i * 3] == 0) {
dp[i * 3] = dp[i] + 1;
} else {
dp[i * 3] = Math.min(dp[i] + 1, dp[i * 3]);
}
}
if (i + n <= y) {
if (dp[i + n] == 0) {
dp[i + n] = dp[i] + 1;
} else {
dp[i + n] = Math.min(dp[i] + 1, dp[i + n]);
}
}
}
return dp[y];
}
}
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 안전지대 - JAVA 풀이 (0) | 2024.10.11 |
---|---|
[LEETCODE] 706. Design HashMap (1) | 2024.10.09 |
[프로그래머스] PCCP 기출문제 - 붕대 감기 JAVA 풀이 (0) | 2024.10.04 |
[프로그래머스] 정수를 나선형으로 배치하기 JAVA 풀이 (0) | 2024.10.02 |
[프로그래머스] PCCP 기출문제 - 동영상 재생기 JAVA 풀이 (0) | 2024.10.01 |