디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[풀이] 이분탐색 응용 튜토리얼 (연습문제 있음)

biximo갤로그로 이동합니다. 2024.05.04 22:53:50
조회 271 추천 6 댓글 3
														

서론:


최근 재미있고 어려운 문제를 해결했는데, 그 문제에 쓰였던 기법이 상당히 특수한 경우에만 적용이 가능하긴 하지만 최소 한두번은 본 거 같아서 소개 드리려 가져왔습니다.


이분 탐색 응용 기법인데, 이미 이름이 있는 알고리즘인지는 모르겠네요. 본 기법을 소개하기 전에, 다음 문제를 어떤 방식으로 해결할 수 있을지 생각해보세요.


포커스 문제:


정점 N (N <= 1e18)개로 이루졌고, 정점 1이 루트인 트리가 주어진다. 각 정점엔 가중치가 주어지는데, 이 가중치는 자신의 부모의 가중치보다 크거나 같다. 또한, 각 정점의 자식들은 가중치 순으로 정렬되어 있다. 이 트리의 정점들 중에서 가장 작은 가중치를 가진 K (K <= 1e5)개의 정점들을 찾아라.


풀이:


N의 제한이 상당히 크기 때문에 트리를 완전히 탐색하기 어렵습니다. 어떤 식으로 탐색할 수 있을까요? 우선 모든 자식 노드는 부모 노드보다 가중치가 크기 때문에 루트부터 탐색해야 하는 사실은 자명합니다. 하지만 굉장히 큰 트리이기 때문에 어떠한 가중치에 도달 할때까지 탐색한 후엔 그만 돌아가야겠죠. 이 가중치를 너무 작게 설정하면 K개의 값을 미처 찾기도 전에 탐색을 종료하고, 너무 크면 최솟값을 찾지 않고 그냥 임의의 K개의 값을 찾겠죠. 그렇기 때문에 정확히 최솟값 K개를 찾을 가중치의 상한을 이분 탐색으로 찾을 수 있습니다. 


이제 x보다 작거나 같은 가중치를 가진 정점들의 수가 K보다 큰가?를 해결하는 결정문제로 바꾸었습니다. 이는 어떤 식으로 해결할 수 있을까요? 트리의 크기가 작지 않기 때문에 탐색을 하는것도 오래 걸릴 거 같지만 실은 그냥 나이브하게 탐색을 진행해도, K개의 정점을 찾는 순간 탐색을 종료하기만 하면 O(K)에 탐색을 마칠 수 있습니다. 이 시간복잡도는 쉽게 설명이 가능합니다. 한번 탐색을 진행할때마다 찾은 x 이하의 정점은 하나 늘어나기 때문에 D번 총 탐색하고, 각 탐색중 불필요하게 반복하는 연산은 최대 1번–자식들을 순회하는 작업 중 자식의 가중치가 x 이상인 경우–이기 때문에 O(K)에 결정문제를 해결 할 수 있습니다. 


이분탐색을 진행하기 때문에 O(K log X)에 전체문제를 해결 할 수 있습니다. 


결론:


이러한 풀이는 일반화하기 쉬워요. 탐색 범위가 굉장히 크지만 실제로 찾아야 하는 도착점이 작다면 쉽게 적용되는 기법이죠. 밑에 쉬운 문제부터 어려운 순으로 연습 문제 몇개를 소개할게요.


연습 문제:


https://www.acmicpc.net/problem/21788


https://www.acmicpc.net/problem/14166


https://www.acmicpc.net/problem/19616

추천 비추천

6

고정닉 2

3

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2861 설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
44705 일반 dx b형 보유자인데 [5] ㅇㅇ(221.165) 05.14 361 0
44704 일반 예전에 LIS(nlogn) 알고리즘 처음 보고 [1] ㅇㅇ(121.55) 05.14 324 3
44703 일반 하면서 느끼는데 수학 능력 엄청 요구하네 [3] ㅇㅇ(118.235) 05.14 417 0
44702 일기 근데 실력과는 별개로 스트릭쌓는 사람들 대단하다고 생각함 [8] EN_SA갤로그로 이동합니다. 05.14 394 2
44701 일반 브 12345 양치기 도움되는거 맞냐 [5] ㅇㅇ(118.235) 05.14 382 0
44700 일반 정올 시스템 오류나는 경우도 있음? [2] ㅇㅇ(14.50) 05.14 165 0
44699 일반 정올 가채점 결과 나옴 ㅇㅇ(211.202) 05.14 202 0
44698 일반 스트릭 상위권 순위보니까 [13] ㅇㅇ(211.234) 05.14 542 2
44697 일기 문제가 드디어 올라와서 다시 적어보는 KPSC 후기 [1] 행복을좇아갤로그로 이동합니다. 05.14 335 5
44696 일반 플래티넘 그리디 문제 태그 안까고 AC 받으니까 짜릿하네 [2] ㅇㅇ(121.55) 05.14 310 7
44695 일반 어제 오픈콘 F 주식 지문 [1] ㅇㅇ(59.6) 05.14 313 7
44693 일반 종만북 대학교 1학년이 읽기 많이 어려운가요? [3] ㅇㅇ(211.234) 05.13 387 0
44692 일반 코포 레드 갔어요 + 약간의 후기 [28] ㅇㅇ(222.121) 05.13 1127 41
44691 질문 뉴비 공부법 질문 좀 드리겠습니다! [7] ㅇㅇ(14.7) 05.13 315 0
44690 일반 스트릭이 끊겼다 [10] ㅇㅇ(49.164) 05.13 508 15
44689 일반 다이나믹 어감이 좋긴해 ㅇㅇ(118.235) 05.13 157 1
44688 일반 코딩 테스트 응시 중에 코랩 같은 거 쓰면 안 됨? [4] ㅇㅇ(220.126) 05.13 354 3
44687 일반 다이나믹 프로그래밍은 왜 다이나믹 프로그래밍임? [11] ㅇㅇ(106.101) 05.13 495 0
44685 일반 PS도 하나의 학문인데 [5] ㅇㅇ(117.111) 05.13 648 16
44683 일반 형들 실버문제 질문점 [3] ㅇㅇ(119.195) 05.13 254 0
44682 일반 koi 게시판 개판이네 [3] ㅇㅇ(211.186) 05.13 490 2
44681 일반 생각보다 쉬운 루비1문제 [16] ㅇㅇ(1.231) 05.13 682 0
44680 일반 걍 PS는 이미 뒤졌다는걸 받아들이면 맘편함 [10] ㅇㅇ(39.7) 05.13 680 5
44679 일반 정올 고등부 2번 문제 데이터가 약합니다. [9] jjang36524갤로그로 이동합니다. 05.13 616 5
44678 일기 뒷북이지만 올려보는 KPSC 후기 행복을쫓아갤로그로 이동합니다. 05.13 354 8
44677 일기 뒷북이지만 올려보는 SCON 후기 [12] 행복을좇아갤로그로 이동합니다. 05.13 537 6
44676 일반 근데 태그 차이가 진짜 상상이상이구나 [3] ㅇㅇ(223.42) 05.13 436 0
44675 일반 추석날 윷놀이 알고리즘대회 해보고십음 [8] 히메사카노아갤로그로 이동합니다. 05.13 377 0
44674 일반 영어권에서 문제만드는 사람들은 왜이리 cow를 좋아하지 [3] ㅇㅇ(211.208) 05.13 396 0
44673 일반 언차티드 입문 [6] 모니터잉(211.235) 05.13 517 63
44672 일반 괜히 위축되진 않으면 좋겠음 [3] ㅇㅇ(211.234) 05.13 401 11
44671 일반 그래 안그래도 사람 적은데 [2] ㅇㅇ(182.231) 05.13 350 7
44670 일반 대회 열고 검수 해봤자 리스크는 크고 리턴은 적음 [4] ㅇㅇ(45.131) 05.13 807 28
44669 일반 유저 태도 논란 결론 [3] biximo갤로그로 이동합니다. 05.13 540 17
44668 일반 ps가 지는 해인가 하는 생각이 들곤 해 [1] ㅇㅇ(118.235) 05.13 379 2
44667 일반 ???: 한국 PS의 문제점 과연 무엇이 있을까요? [2] ㅇㅇ(58.140) 05.13 984 23
44665 일반 정올은 2018이 레전드였지 [6] ㅇㅇ(14.53) 05.13 483 6
44664 일반 러스트 입력 쉽게하는법 없음? [2] ㅇㅇ(59.11) 05.13 158 0
44663 일기 념글까지는 웃고 넘어갈만 했는데 [1] ㅇㅇ(218.152) 05.13 439 13
44662 일반 아니 1억이고 2억이고 나발이고 [3] ㅇㅇ(211.234) 05.13 419 12
44661 일반 뭔가 골드5부터는 태그 안까고 풀기가 ㅇㅇ(182.215) 05.13 260 2
44659 일반 그 사람이 억대나 후원함? [2] ㅇㅇ(223.62) 05.13 419 1
44657 일반 거의 다 푼 것 같은데 ㅇㅇ(182.231) 05.12 173 0
44656 일반 풀만한것만 골라푸는 나쁜 습관을 버려야겠다 [1] ㅇㅇ(106.101) 05.12 242 1
44655 일반 백준 본인티어보다 몇단계 낮은거로 수련하면됨? [3] ㅇㅇ(116.39) 05.12 312 0
44654 일반 PS판을 지키는 다크나이트 PS갤러리 [7] ㅇㅇ(223.39) 05.12 529 0
44653 일반 4,000 solved 했어요 [24] 행복을쫓아갤로그로 이동합니다. 05.12 1108 24
44652 일반 비전공생도 이거 많이 함? [4] ㅇㅇ갤로그로 이동합니다. 05.12 329 1
44651 일반 현재 출제/검수 판의 문제 [16] ㅇㅇ(50.114) 05.12 1136 59
44650 일반 종만북 지금도 괜찮음? [3] ㅇㅇ(1.231) 05.12 317 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2