// 무한 수열
package Gold_V_5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Ex1351 {
static long n;
static int p;
static int q;
static Map<Long, Long> map = new HashMap<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Long.parseLong(st.nextToken());
p = Integer.parseInt(st.nextToken());
q = Integer.parseInt(st.nextToken());
System.out.println(get(n));
}
static long get(long key) {
if (map.get(key) == null) { put(key); }
return map.get(key);
}
static void put(long key) {
if (key == 0L) {
map.put(0L, 1L);
} else {
map.put(key, get(key / p) + get(key / q));
}
}
}
원래는 아래 코드처럼 작성했었지만 시간초과가 나서 위처럼 수정했다.
시간초과 난 코드
static void infinite(long n) {
if (n == 0) {
map.put(n, 1L);
} else {
infinite(n / p);
infinite(n / q);
map.put(n, map.get(n / p) + map.get(n / q));
}
}'백준 풀이 > 자바(Java)' 카테고리의 다른 글
| 백준 1417 자바 - 국회의원 선거 (0) | 2024.03.19 |
|---|---|
| 백준 1354 자바 - 무한 수열 2 (0) | 2024.03.18 |
| 백준 4880 자바 - 다음수 (0) | 2024.03.16 |
| 백준 5073 자바 - 삼각형과 세 변 (0) | 2024.03.15 |
| 백준 10214 자바 - Baseball (0) | 2024.03.14 |