728x90
반응형

[ 백준 14002 - 가장 긴 증가하는 부분 수열4 ]

https://www.acmicpc.net/problem/14002

 

14002번: 가장 긴 증가하는 부분 수열 4

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이

www.acmicpc.net

#include <stdio.h>
#include <string.h>
int main()
{

	int a[1001]={0,};
	int dy[1001]={0,}, path[1001]={0,};
	int stack[1010]={0,};
	int n, i, j, k=0, l, top=0;

	scanf("%d", &n);
	for(i=0;i<n;i++)
	{
		scanf("%d", &a[i]);
	} 
	
	for(i=0;i<n;i++)
	{
		dy[i]=1;
		path[i]=-1;
		for(j=0;j<i;j++)
		{
			if(a[i]>a[j] && dy[j]+1>dy[i])
			{
				dy[i]=dy[j]+1;
				path[i]=j;     
			}
		}
		if(k<dy[i])
		{
			k=dy[i];
			l=i;
		}
	}

	do{
		stack[top]=a[l];
		l=path[l];
		top++;
		if(l==-1)
		{
			break;
		}
	}while(1);
    
	printf("%d\n", k);
    
	do{
		top--;
		if(top==-1)
		{
			break;
		}
		printf("%d ", stack[top]);
	}while(1);

	return 0;

}
반응형

'백준 문제풀이' 카테고리의 다른 글

백준 2448번 - 별찍기11  (0) 2021.12.01
백준 2447번 - 별찍기10  (0) 2021.12.01
백준 2605번 줄세우기  (0) 2021.10.20
백준 2655번 - 가장 높은탑 쌓기  (0) 2021.10.20
백준 10989 수 정렬하기3 소스 코드  (0) 2021.10.08
Posted by 명문코딩컴퓨터
,