FickleBoBo

[BaekJoon] 2565번 - 전깃줄 [Java][C++]

문제 링크 1. 문제 풀이 교차하지 않도록 제거해야 하는 전깃줄의 최소 개수를 구해야 하는 문제로 전깃줄이 교차하지 않을 경우 $A$ 의 위치 번호가 증가할수록 연결된 $B$ 의 위치 번호도 증가한다는 점에서 LIS 를 활용하면 해결할 수 있다. $A$ 의 위치 번호와 $B$ 의 위치 번호를 쌍으로 묶고 한 쪽 위치 번호를 기준으로 오름차순...

[BaekJoon] 14002번 - 가장 긴 증가하는 부분 수열 4 [Java][C++]

문제 링크 1. 문제 풀이 수열 $A$ 에 대한 가장 긴 증가하는 부분 수열의 길이와 실제 수열을 구하는 문제로 전형적인 LIS 알고리즘을 활용하는 문제다. 수열의 크기 $N$ 이 최대 $1,000$ 이어서 2중 반복문을 활용하면 간단하게 해결할 수 있다. 실제 수열의 경우 dp 배열을 역순 탐색해도 하나를 구할 수 있지만 일반적인 구현인...

[BaekJoon] 11054번 - 가장 긴 바이토닉 부분 수열 [Java][C++]

문제 링크 1. 문제 풀이 수열 $S$ 가 $S_k$ 를 기준으로 증가하다 감소하는 경우의 최대 길이를 구하는 문제로 LIS 를 응용하면 해결할 수 있다. 수열의 앞에서 뒤로 이어지는 LIS와 뒤에서 앞으로 이어지는 LIS를 각각 구한다면 $S_k$ 를 기준으로 앞에서부터 $S_k$ 까지 증가하는 LIS는 앞에서 뒤로 이어지는 LIS에서,...