본문 바로가기

Algorithm3

[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.
이분탐색 (Binary Search) 기법 오름차순으로 정렬된 리스트를 같은 크기의 두 부분 리스트로 나누고 필요한 부분에서만 탐색하도록 제한하여 원하는 원소를 찾는 알고리즘입니다. 기초적인 알고리즘인 만큼 PS에서 자주 사용할일은 없지만 문제의 조건에서 주어진 수의 규모가 크고 반복해야 할 일이 많다면 해당 기법을 시도해보아야 합니다. 대표적 문제 : 프로그래머스 - 입국심사 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 기본적인 이분탐색 코드는 다.. 2021. 10. 8.
기수정렬 (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.