문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/154538

제한 사항

입출력 예

풀이
import java.util.Queue;
import java.util.LinkedList;
import java.util.HashSet;
class Solution {
public int solution(int x, int y, int n) {
if (x == y) return 0;
int answer = 1;
Queue<Integer> result = new LinkedList<>();
HashSet<Integer> visitedSet = new HashSet<>();
result.add(x);
while (result.size() > 0) {
int count = result.size();
for (int i = 0; i < count; i++) {
int num = result.poll();
int[] temp = new int[] { num + n, num * 2, num * 3 };
for (int j = 0; j < 3; j++)
if (temp[j] < y && !visitedSet.contains(temp[j])) {
result.add(temp[j]);
visitedSet.add(temp[j]);
}
if (temp[0] == y || temp[1] == y || temp[2] == y)
return answer;
}
answer++;
}
return result.isEmpty() ? -1 : answer;
}
}
후기
처음에 BFS로 풀려고 했는데 런타임 에러가 나서 while 문으로 바꿨는데 이제는 시간 초과가 떴다... 아무리 생각해도 모르겠어서 질문하기 탭에서 힌트를 얻었다. 결과를 기록해서 이미 얻은 적이 있던 결과는 다시 계산하지 않도록 하는 방법이다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][Java][Lv. 1] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2023.12.26 |
|---|---|
| [프로그래머스][Java][Lv. 1] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2023.12.24 |
| [프로그래머스][JAVA][Lv. 2] 롤케이크 자르기 (0) | 2023.11.04 |
| [프로그래머스][JAVA][Lv. 2] 파일명 정렬 (0) | 2023.11.01 |
| [프로그래머스][JAVA][Lv. 0] 치킨 쿠폰 (0) | 2023.10.31 |