전체보기141 [3] 좌표 압축 (Coordinate-Compression) 좌표 압축은 PS에서 정말 많이 쓰이는 테크닉으로, 세그트리 같이 구간 쿼리를 해결하기 위해 많이 사용한다. 세그트리는 주어진 범위의 모든 영역을 Leaf node로 사용하기 때문에, 해당 범위가 커지면 좌표 압축이 필요하다. 결국 좌표 압축은, 해당 좌표를 0,1,2 ~ 의 값으로 치환하는 것인데, 그 자체는 매우 어렵고 이해가 되지 않는 개념은 아니다. for (int i = 0; i > comp[i]; v.push_back(comp[i]); } sort(v.begin(), v.end()); v.resize(unique(v.begin(), v.end()) - v.begin()); for (int i = 0; i < n; i++) { comp[i] = lower_bound.. 2020. 9. 28. [2] Segment Tree (Lazy Propagation) Lazy-Segment Tree는 기본 세그먼트 트리에 구간에 대한 업데이트를 적용하는 쿼리에 적합한 자료구조이다. 기존 Segment Tree는 매 Update 쿼리마다 Tree의 Leaf node까지 가서 업데이트를 적용하지만 구간에 대해 업데이트가 필요한 경우엔, 그걸 일일이 다 바꿔주는 것이 비효율적이다. 해당 구간을 나중에 조회하지 않을 수도 있기 때문이다. 그럼 해당 구간을 언제 업데이트해줘야 하나? 물론 그 구간을 조회하거나 업데이트 해야 할 때 이다. 그때 아니면 굳이 밑으로 내려갈 필요가 없다. 해당 구간에 업데이트해야 할 값을 배열로 가지고 있고 (segtree와 동일한 배열) 해당 지점을 update 혹은 find로 접근할 때 propagation을 해준다. Propagation vo.. 2020. 9. 28. [2] Go mod - Go의 패키지 관리 시스템 처음 무작정 개발에 달려들었을 때 가장 어려웠던 부분이 패키지 관리였습니다. 다른 언어처럼 임의의 폴더에서 실행파일 main.go 를 구성하고 프로젝트를 실행했는데 모듈이 import 되지 않아서 매우 답답했었습니다. 아니 분명 저기 상대경로로 표시해줬는데 안된다고? (매우 속터짐) 처음에는 go get 을 이용해서 막무가내로 글로벌로 패키지를 설치했고 import path에 항상 full path를 제공해야 하기 때문에 아 원격지에 구성된 모듈을 매번 업데이트해야 하겠구나 라고 생각해서 매번 커밋하고 push하고 go get -u 패키지로 업데이트하고.. 그런 미련한 짓을 반복했었습니다. 알고보니 GOPATH를 매 개발하는 프로젝트에서 환경변수로 설정을 해야 해당 프로젝트 내에서 모듈을 찾을 수 있었던.. 2020. 9. 25. [2] Java Spring Boot Project - Intellij 에서 실행시키기 친구가 짠 코드를 피드백하기 위해 pull 했는데 configuration을 어떻게 설정해야 할지를 까먹어서 이를 기록하려고 작성하였습니다. 프로젝트를 로컬에서 직접 설정하지 않은 경우라면 Run configuration이 설정되어 있지 않을 것입니다. Intellij를 설치하고 나서 프로젝트를 부르면 자동으로 maven 혹은 gradle dependency가 설치됩니다. 설치가 완료되고 빌드 및 실행하려고 보면 다음과 같이 보입니다. 실행 버튼이 Disabled 되어 있다는 건, 어떻게 실행해야할 것인지에 대해 명시가 되어있지 않다는 것입니다. Add Configuration을 누르면 여러 템플릿이 있습니다. 현재 프로젝트에 맞는 템플릿을 선택해주면 됩니다. Spring Boot의 경우 개별적으로 템플.. 2020. 9. 25. 이전 1 ··· 14 15 16 17 18 19 20 ··· 36 다음