본문 바로가기
728x90
반응형

K번째 수2

[백준] 1300번 : K번째 수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제에서 K의 범위가 1~min(10^9, N^2)이므로 시간 복잡도가 N^2인 알고리즘을 사용할 수 없다. 해당 문제를 이진 탐색 알고리즘으로 해결하여 중앙값보다 작은 수의 개수를 세면서 범위를 절반씩 줄이는 방법으로 K번째 수를 구한다. 중앙값보다 작은 수의 개수가 K - 1개인 중앙값이 K번째 수가 되는 것이다. 2차원 리스트는 N행이 N의 배수로 구성되어 있으므로 2차원 리스트에서의 K번째.. 2024. 1. 23.
[백준] 11004번 : K번째 수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제을 퀵 정렬을 구현해 주어진 수를 오름차순으로 정렬하고 K번째 수를 출력하는 방법으로 해결한다면 우선 퀵 정렬에서 가장 중요한 pivot을 정하는 방법을 알아야 한다. 만약 pivot이 K라면 K번째 수를 찾은 것이다. 만약 pivot이 K보다 크다면 pivot의 왼쪽 부분에 K가 있으므로 왼쪽(s ~ pivot - 1)만 정렬을 수행한다. 만약 pivot이 K보다 작다면 pivot의 오른쪽 부분에 K가 있으므로 오른쪽(pivot + 1 ~ e)만 정렬을 수행한다. 제일 처음에.. 2024. 1. 15.
728x90
반응형