Loading...
2023. 3. 21. 23:42

이분탐색을 이용해서 MN개의 조합에서 k번째 수를 찾는 놀라운 방법

1. 문제 1300번: K번째 수 (acmicpc.net) 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 2. 풀이 k 제한이 커서 그런지 이전에 배운 우선순위 큐 방법으로 풀면 시간초과로 통과를 못한다 import heapq from sys import stdin n = int(stdin.readline()) k = int(stdin.readline()) q = [] for i in range(1,n+1): heapq.heappush(q,(i*1,i,1)) for _ in r..

2022. 9. 14. 02:56

이진 탐색 정복기3 -심화 응용 lower bound, upper bound-

1. 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 주어진 수열에서 특정한 수들이 몇개나 있는지 찾는 문제 2. lower bound와 upper bound 지금까지 배웠던 이진탐색 알고리즘은 특정한 수가 존재하는지, 존재하지 않는지만 알아보는 알고리즘이다. 하지만 수열에서 특정한 수가 여러개 존재할 수도 있는데 그럴때 이진탐색으로 몇개나 존재하는지 알 수 있을까 만약 특정한 수가 가장 먼저 나오기 시작..