본문 바로가기

binary_search8

[BOJ | Python] 2343번: 기타 레슨 https://www.acmicpc.net/problem/2343 문제강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다.강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블.. 2025. 1. 31.
[BOJ | Python] 2512번: 예산 https://www.acmicpc.net/problem/2512 문제국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다.모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다.모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한.. 2025. 1. 31.
[BOJ | Python] 2417번: 정수 제곱근 https://www.acmicpc.net/problem/2417 문제정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.  입력첫째 줄에 정수 n이 주어진다. (0 ≤ n   출력첫째 줄에 q2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다. 풀이이분탐색을 사용해서 풀이했다.n = int(input())left, right = 0, nwhile left 문제에서의 q의 역할을 mid가 임시적으로 수행한다.만약 mid^2이 n 이상이라면 조건을 충족하므로 ans에 mid의 값을 저장한다. 조건을 충족했지만, 우리는 조건을 충족하면서 '가장 작은' 정수를 찾아야 하므로 right를 mid - 1로 줄인 후 다시 검사한다.반대로 조건을 충족하지 않는다면 mid 값이 더 커져야 하므로 l.. 2025. 1. 31.
[BOJ | Python] 2776번: 암기왕 https://www.acmicpc.net/problem/2776 문제연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했다. 동규를 도와주기 .. 2025. 1. 31.