분류 전체보기
문제 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net #include #include #include using namespace std; int n; int arr[1001]; int dp[1001]; int main() { cin >> n; for(int i = 0;i> arr[i]; } int max = 0; for(int i=0;i
풀이 코드 배열 a,b를 만들어 숫자들을 저장한 다음, 배열 a를 오름차순 정렬한다. 그 다음, map을 이용하여 압축된 코드를 저장한다. map의 find 함수를 사용하면 찾고자 하는 값의 iterator을 가져오고, 만일 찾고자 하는 값이 없다면 map.end()을 반환한다. map을 순회하면서 a[i]가 있다면 k값을 할당하고, 없다면 ++k 값을 할당한다. 출력은 배열 b를 이용하여 map을 순회하면서 한다. #include using namespace std; typedef long long ll; #define num 1000001 map m; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n=0;int a[num]={0}; ..