2017년 1월 5일 목요일

BOJ 12015 가장 긴 증가하는 부분 수열 2, 3

가장 긴 증가하는 부분 수열 2 문제를 좌표압축으로 풀어봤다.
내가 만든 segment tree의 경우 query 나 update를 할 때, 처음에 주어진 배열의 크기 n이 있으면 0부터 n-1까지를 nodeLeft, nodeRight로 놓고 탐색한다. 배열의 크기가 n이니 즉, 수가 n개 있으니 0번 index부터 n-1번 index라고 생각하는 것이다.

하지만 좌표 압축을 할 때나 좌표 압축 없이 풀 떄나 이 문제에서 주어진 값이 1이상 100만 이하였고, 좌표 압축시에도 첫번째 원소 쿼리를 할 때 query(0, -1)인 쿼리를 피하기 위해 항상 index를 1부터 사용했다. 그렇기 때문에 100만+1 을 크기로 해주거나 좌표압축시에는 cnt+1을 크기로 segment tree 초기화가 수행되어야 한다.

그리고 이 문제는 좌표압축할 때 map을 쓰니 시간초과가 나서 대신 이분탐색을 직접 구현해서 이용했다.

댓글 없음:

댓글 쓰기