문제
https://school.programmers.co.kr/learn/courses/30/lessons/154538
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드
import java.util.*;
class Solution {
public int solution(int x, int y, int n) {
Queue<int[]> queue = new LinkedList<>();
boolean[] visited = new boolean[y + 1]; // 0~y 까지
queue.add(new int[]{y, 0});
visited[y] = true;
while (!queue.isEmpty()) {
int[] current = queue.poll();
int value = current[0];
int count = current[1];
if (value == x) return count;
if (value % 2 == 0 && !visited[value / 2]) {
visited[value / 2] = true;
queue.add(new int[]{value / 2, count + 1});
}
if (value % 3 == 0 && !visited[value / 3]) {
visited[value / 3] = true;
queue.add(new int[]{value / 3, count + 1});
}
if (value - n >= x && !visited[value - n]) {
visited[value - n] = true;
queue.add(new int[]{value - n, count + 1});
}
}
return -1;
}
}
'Java > Java-1차캐시' 카테고리의 다른 글
[백준] 2293 : 동전1, 2625 : 동전 바꿔주기 (0) | 2025.04.18 |
---|---|
[프로그래머스] 주식가격 (0) | 2025.04.07 |
[백준] 2294 : 동전2 (0) | 2025.03.11 |
[백준] 11054 : 가장 긴 바이토닉 수열 (0) | 2025.03.08 |
[백준] 1043 : 거짓말 (0) | 2025.03.06 |