본문 바로가기
알고리즘 풀이/이진 탐색

[백준/파이썬] 1300번 : K번째 수

by developer jini 2023. 1. 6.
728x90

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

 

1300번: K번째 수

세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B

www.acmicpc.net

배열을 사용하여 풀면 쉬운 문제지면 배열을 사용하면 메모리 초과 오류가 뜬다.

다른 블로그 참조하여 풀이.

(너무 어렵다 ...... 생각조차 못함)

n = int(input())  # 배열의 크기
k = int(input())


def bianry_search(target, start, end):
    while start <= end:
        # 중간값
        mid = (start + end) // 2

        # 내가 원하는 인덱스의 값
        cnt = 0
        for i in range(1, n + 1):
            cnt += min(mid // i, n)

        if cnt >= target:
            end = mid - 1
        else:
            start = mid + 1
    return start


print(bianry_search(k, 1, n * n))

 

728x90

댓글