728x90
반응형
SMALL
[소프티어] 징검다리 레벨3 자바 풀이 DP알고리즘
DP문제는 어려운데 재밌다.
급한대로 보카 영단어책에 마구 적어봤다.
역시 디피야 디피
레벨3 체감중...
링크
https://softeer.ai/practice/6293/history?questionType=ALGORITHM
문제스펙
미리보는 해설
A돌에서 B돌로 움직일때처럼
1칸 1칸 움직이는 경우에
최대값을 dp배열에 저장했다.
2~n 번째 돌을 반복문돌리면서
1~n-1 번째 돌에 대해서 하나하나씩 최대값 비교.
정답 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int cost[] = new int[n];
int dp[] = new int[n];
st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++){
int tempCost = Integer.parseInt(st.nextToken());
cost[i] = tempCost;
dp[i] = 1;
}
int dap = 1;
for(int i=1; i<n; i++){ // 신규 돌
for(int j=0; j<i; j++){ // 과거 되돌아보기
//System.out.println("\n\ni,j="+i+","+j);
//System.out.println("cost="+cost[j]+"<"+cost[i]);
if(cost[j] < cost[i]){ // 과거 돌보다 < 신규로 밟는 돌이 높을때, 1만큼 점프 가능한데
// 신규 돌의 dp값과 vs 과거 돌의 dp값 + 1점프한값, 비교해서 더 높은 값을, 현재의 신규 돌의 dp값 저장
dp[i] = Math.max(dp[i], dp[j]+1);
}
}
// 현재의 신규 돌의 dp값의 최대가치가 정해지면서 계속 max값 찾기
dap = Math.max(dap, dp[i]);
}
// bw.write(String.valueOf(ff)+"\n");
bw.write(String.valueOf(dap));
bw.close();
}
}
728x90
반응형
LIST
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] 강의실 배정 자바 풀이 레벨3 그리디알고리즘 (3) | 2024.07.20 |
---|---|
[소프티어] 출퇴근길 자바 풀이 DFS 레벨3 (HSAT 6회 정기 코딩 인증평가 기출) (1) | 2024.07.20 |
[소프티어] 성적 평균 자바 풀이 레벨3 (0) | 2024.07.19 |
[소프티어] 나무 공격 자바 풀이 레벨2 (0) | 2024.07.19 |
[소프티어] 레벨2 문제 유형 전체적인 난이도 후기 (올솔 후기) (0) | 2024.07.19 |