FickleBoBo

[백준] 14003번 - 가장 긴 증가하는 부분 수열 5 [Java][C++]

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

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

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

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

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

[백준] 1064번 - 평행사변형 [Java][C++]

문제 링크 1. 문제 풀이 서로 다른 세 점이 주어졌을 때, 적절한 점 $D$ 로 평행사변형을 만들 수 없으면 $-1$ 을 출력하고, 만들 수 있으면 만들 수 있는 평행사변형 중 가장 큰 둘레의 길이와 가장 작은 둘레의 길이의 차를 출력해야 하는 문제다. 평행사변형을 만들 수 없는 경우는 세 점이 일직선 상에 위치하는 경우로 세 점의 좌표가 ...