코딩/백준 (Python)
백준 1300번: K번째 수 (Python)
접근 문제 설명에 '의외로 이분 탐색으로 풀 수 있는 놀라운 문제'라고 했는데 정말 신기하게 이분 탐색으로 풀 수 있었다. 이분 탐색 알고리즘으로 풀기 위해 고민을 좀 많이 하였다. 매 탐색 과정에서 cnt를 계산해 주는데, 이 cnt는 N * N 행렬의 각 행에서 mid 값보다 작은 수들의 개수를 의미한다. 물론 모든 행렬을 순환하면서 mid 값과 비교하지는 않고, min(n, mid // i) 수식을 이용하여 계산해주게 된다. 예를 들어 n이 3인 행렬에서 mid가 4일 경우, n값 3과 mid // i = 4 중 작은 값은 3이다. [1, 2, 3] 중 4보다 작은 값은 세개 모두 해당한다는 의미이다. 이런 식으로 계산하여 mid 값보다 작은 수들의 개수를 모두 구한 cnt와 target을 비교한다..
2021. 4. 5. 08:01
최근댓글