본문 바로가기

알고리즘2

[C++] 백준 11054 - 가장 긴 바이토닉 부분 수열 백준 11054 : 가장 긴 바이토닉 부분 수열 난이도 : 골드 4 시간 : 33분 소요 문제 https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 풀이 과정 LIS(Longest Increasing Subsequence)에 대한 개념과 구현 방법에 대해서 알고 있으면 이 문제를 푸는데는 어렵지 않다. 입력 값은 b[MAX] 배열로 받았다. 그리고 Udp(1부터 N까지 인덱스의 오름차순으로 확인하는 dp 배열) 와 Ddp(N부터 1까지 인덱스의 내림차순으로 확인하는 d.. 2023. 2. 24.
[C++] 백준 1932 - 정수 삼각형 백준 1932 정수 삼각형 난이도 : 실버 1 시간 : 20분 소요 문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 과정 먼저 arr라는 2차원 배열을 만들어서 삼각형 구조의 입력값을 받았다. 그 후 dp라는 2차원 배열을 만들어서 N번째 배열에서 각각의 최댓값을 저장했다. dp[i][j]는 i번째 줄에서 j항을 선택했을 때의 최대가 되는 경로의 합을 의미한다. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 예를 들면, dp[1][1]은 1번째 1번 항을 선택했을 때의 최댓값이다. 따라서 dp[1].. 2023. 2. 24.