합친 LIS (난이도: 하)
·
알고리즘 (with JAVA)/동적 계획법
( 여기서 설명하는 알고리즘은 아래의 사이트에서 LIS를 먼저 선행 후 풀는 것을 추천합니다. ) 최대 증가 부분 수열(난이도: 하) (tistory.com) 최대 증가 부분 수열(난이도: 하) 1. 문제 설명 (1) 부분 순열에 포함된 숫자들이 순 증가(strictly increasing)하면 이 부분 수열을 증가 부분 수열이라고 부른다. * 순 증가란, 두 인접한 숫자 중 앞의 것이 항상 더 작을 때 수열이 순증 kind-coding.tistory.com 1. 문제 설명 (1) 두 개의 정수 수열 A와 B에서 각각 길이 0 이상의 증가 부분 수열을 얻은 뒤 이들을 크기 순서대로 합친 것을 합친 증가 부분 수열이라고 부른다. * JLIS(Joined Longest Increasing Subsequenc..
최대 증가 부분 수열(난이도: 하)
·
알고리즘 (with JAVA)/동적 계획법
1. 문제 설명 (1) 부분 순열에 포함된 숫자들이 순 증가(strictly increasing)하면 이 부분 수열을 증가 부분 수열이라고 부른다. * 순 증가란, 두 인접한 숫자 중 앞의 것이 항상 더 작을 때 수열이 순증가한다고 한다. * 단조 증가(monotonically increasing)란, 두 인접한 숫자가 같은 경우를 말한다. (2) 예를 들어, 수열 S가 '1 3 4 2 4' 라고 하면 '1 2 4'는 S의 증가 부분 수열이지만 '1 4 4'는 아니다. (3) 이때 주어진 수열에서 얻을 수 있는 증가 부분 수열 중 가장 긴 것을 찾는 프로그램을 작성하여라. * 이 문제를 최대 증가 부분 수열(LIS, Longest Increasing Subsequence)라고 부른다. 2. 입출력 조건 ..
삼각형 위의 최대 경로 (난이도: 하)
·
알고리즘 (with JAVA)/동적 계획법
1. 문제 설명 (1) 아래의 그림과 같이 삼각형으로 배치된 자연수들이 있다고 가정한다. (2) 맨 위의 숫자에서 시작해서, 한 번에 한 칸씩 아래로 내려가 맨 아래 줄까지 닿는 경로를 만들려고 한다. * 경로는 아래줄로 내려갈 수 있으며 오른쪽과 아래의 숫자로 갈 수 있습니다. (3) 이때 모든 경로 중 숫자의 합을 최대화하는 경로들에 포함된 숫자들의 합은 얼마인지 찾아내는 프로그램을 작성하시오. 2. 입출력 조건 및 예제 입력 조건 (1) 입력의 첫 줄에는 테스트 케이스의 수 C(1
와일드 카드 (난이도: 중)
·
알고리즘 (with JAVA)/동적 계획법
1. 문제 설명 (1) 와일드 카드는 다양한 운영체제에서 파일 이름의 일부만으로 파일 이름을 지정하는 방법이다. (2) 이때 사용하는 문자열을 와일드 카드 패턴이라고 하는데, 패턴은 일반적인 파일명과 비슷하지만 특수 문자 * 또는 ?를 포함할 수 있는 문자열이다. (3) 와일드 카드 패턴을 앞에서 한 글자씩 파일명과 비교해서 모든 글자가 일치했을 때 해당 와일드 카드 패턴이 파일명과 대응된다고 말한다. (4) 와일드 카드 패턴을에 포함된 "?"는 어떤 글자와도 대응된다고 가정하며, "*"는 0 글자 이상의 어떤 문자열에도 대응된가고 가정한다. ( 예시1) 와일드 카드 he?p는 파일명 help와 heap에 대응되지만, helpp에 대응되지 않습니다. ) ( 예시2) 와일드 카드 *p*는 파일명 help와..