[DP] Longest Increasing Subsequence (LIS)
Dynamic Algorithm을 응용하여 풀 수 있는 문제중에 최장 증가 부분수열 문제가 있다. 해당 문제는 주어진 수열에서 가장 긴 부분 수열을 찾는 문제이다. 보통 오름차순,내림차순 등의 조건이 주어지니 Bottom-Up 방식으로 판별해나가면된다. 백준에서 풀이해볼 수 있는 문제는 11053번 문제이다. https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 내가 풀이..
2021. 10. 24.
기수정렬 (Radix Sort)
기수정렬이란 = 자릿수를 기준으로 차례대로 데이터를 정렬하는 알고리즘 계수정렬과 유사하지만 더 많은 메모리를 차지하고 더 빠른 시간 복잡도를 가진다 ( 정렬횟수 X N) 구현시 주의할점 * 배열의 가장 큰 수를 찾아 정렬 반복회수를 구한다. * 1의자리부터 10의 자리, 100의 자리 순서로 정렬을 진행한다. * 계수정렬과 같이 0,1,2,3,4,5,6,7,8,9 정렬중인 버킷에 넣는 과정을 진행할때는 누적값을 함께 계산해야한다. (=> 해당 누적값이 추후 결과배열의 인덱스로 이용됨) * 정렬의 반복은 배열의 최댓값이 더이상 나눠지지 않을때 (소수점으로 몫이 나올때) 까지 진행된다. #define CRT_SECURE_NO_WARNING #include #include using namespace std;..
2021. 8. 26.