Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- YBMCOS
- java
- BFS
- 다이나믹프로그래밍
- 세그먼트트리
- PS
- 다익스트라
- 시뮬레이션
- 엘라스틱서치
- COSPROJAVA1급
- QUICKSTARTGUIDE
- 이젠 골드구현도 어렵네..
- spring
- 재귀함수
- COSPRO
- 01BFS
- dp
- 백준
- 우선순위큐
- deque
- DFS
- 구현
- 게더타운시작
- 취득후기
- 자바PS
- GatherTown
- 알고리즘
- 완전탐색
- 네트워크플로우
- 백준코딩테스트
Archives
- Today
- Total
공부공간
BOJ - 1890 ) 점프 본문
https://www.acmicpc.net/problem/1890
DP는 너무나도 어려운것 같다.
점프는 맵에 표시된 수만큼 오른쪽과 아래로 점프한다.
최종 목적지까지 가는 경로를 찾아주면된다.
중간에 한 지점을 생각해서 그 지점에 올수있는 경우의 수가 DP값에 저장된다.
처음 시작지점에 DP 값을 1로 설정하여 움직일수있는 지점에다가 현재의 DP값을 저장해준다.
그렇게 누적되어가는 값이 그 지점으로 올수있는 경우의 수를 뜻한다.
즉 그게 마지막 지점이면 처음에서 시작해서 마지막에 올수있는 모든 경우의 수이다.
처음에는 BFS로 QUEUE에 좌표를 넣고 진행하려했었지만 시간초과가 날것 같았다.
또한 문제에서 경우의수는 2^63-1이라고 지정해준것을 못봐서 70%에서 계속 틀렸다고 나왔다.
경우의수를 저장해주는 DP배열을 long형으로 바꾸어 주어야했다ㅠ
또한 디버깅하다가 맨 마지막 지점에 도착했을때 좌표가 0 0 이므로 자기 자신의 값을 한번더 더하는 예외가 발생하여
처리해주었다. DP너무어렵다 ㅠㅠ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N =Integer.parseInt(st.nextToken())+1;
int map[][] = new int[N][N];
long dp[][] = new long[N][N];
dp[1][1] =1;
for(int y = 1 ; y < N ; y++) {
st = new StringTokenizer(br.readLine());
for( int x = 1 ; x < N ; x++) {
map[y][x] = Integer.parseInt(st.nextToken());
}
}
for(int y = 1 ; y < N ; y++) {
for(int x = 1 ; x < N ; x++) {
if(dp[y][x]==0 || (x==N-1 && y == N-1)) continue;
if(y+map[y][x] <N)dp[y+map[y][x]][x]+=dp[y][x];
if(x+map[y][x] <N)dp[y][x+map[y][x]]+=dp[y][x];
}
}
System.out.println(dp[N-1][N-1]);
}
}
|
cs |
index는 정수값..
패키지는빼주고 클래스이름은 Main으로..
'알고리즘 > Dynamic Programming' 카테고리의 다른 글
BOJ - 11066 ) 파일 합치기 (0) | 2020.02.11 |
---|---|
BOJ - 1965) 상자 넣기 (0) | 2020.02.06 |
BOJ - 11048 ) 이동하기 (0) | 2020.01.30 |
BOJ - 2294 ) 동전 2 (0) | 2020.01.30 |
BOJ - 2293) 동전 1 (0) | 2020.01.30 |
Comments