본문 바로가기

이분탐색

(11)
[백준 / BOJ] 6209 제자리 멀리뛰기 문제 출처 : https://www.acmicpc.net/problem/6209 6209번: 제자리 멀리뛰기 첫 번째 줄에는 갇힌 돌섬으로부터 탈출구까지의 거리 d(1 ≤ d ≤ 1,000,000,000), 작은 돌섬의 수 n(0 ≤ n ≤ 50,000), 제거할 수 있는 작은 돌섬의 수 m (0 ≤ m ≤ n)이 공백으로 구분되어 주어진다. 두 www.acmicpc.net 시작지점(0번)에서 각각 일정 거리 떨어진 n개의 돌섬이 있다. 이때, n개의 돌섬중 m개를 제거하여 돌섬사이의 거리의 최솟값을 최대로 하는 문제이다. 풀이 문제에 나와있는 "최솟값을 최대"로 라는 키워드가 결정문제임을 알려주니 문제의 입력조건을 살펴보고 결정문제로 풀린다면 풀면 된다. 못 푼다면 DP로 풀면된다(모든 결정문제는 DP..
[백준 / BOJ] 17383 옥토끼는 통신교육을 풀어라!! 문제 출처 : https://www.acmicpc.net/problem/17383 17383번: 옥토끼는 통신교육을 풀어라!! 옥토끼가 이런 식으로 문제를 풀면 tncks0121은 옥토끼가 5, 10, 15, 20, 25, 30, 34분에 문제를 풀었으므로 최대 5분동안 휴식을 한 것으로 간주한다. www.acmicpc.net 옥토끼는 두개의 문제를 한번에 풀수있다. N개의 문제가 주어질때, 문제를 푸는 시간사이의 공백을 최소화하는 시간을 구하는 문제다. 풀이 결정문제로 풀은 문제였다. Ni가 최대 10억이고, 완전탐색으로 풀경우, 최소 max(Ni)*(a), (a>N)시간복잡도가 나와서, 항상 시간초과가 나온다. 위의 식 N*(a)의 시간을 줄이는 방법은 다음과 같다. 1. N N이 의미하는것은, 모든..
[백준 / BOJ] 17374 비트베리 문제 출처 : https://www.acmicpc.net/problem/17374 17374번: 비트베리 비트베리는 국내 최다 사용자를 확보하고 있는 간편암호화폐 지갑이다. 비트베리의 가장 큰 특징 중 하나는 카카오 계정으로 지갑을 만들고, 전화번호로 암호화폐를 주고받을 수 있는 점이다. www.acmicpc.net 페카즈는 자신이 갖고있는 비트코인의 수를 최대로 하고싶다. 페카즈와 빈센트가 할 수 있는 거래가 주어질때, 최대 비트코인수를 구하는 문제다. 풀이 이분탐색으로 푼 문제다. 할수있는 거래그래프는 아래와 같은데, 아래를 보면 베리를 코인으로 최대로 바꾸는것이 항상 최선임을 알수있다. 비트 -> 코인 코인 -> 비트 베리 -> 코인 코인 -> 베리 베리 -> 코인 -> 비트 얻을 수 있는 비트코인..
[백준 / BOJ] 21319 챔피언(Easy) 문제 출처 : https://www.acmicpc.net/problem/21319 21319번: 챔피언 (Easy) 1번 선수는 어떻게 해도 챔피언이 될 수 없다. 2번 선수는 어떻게 해도 챔피언이 될 수 없다. 3번 선수는 (2, 3), (1, 3), (3, 4) 순서대로 격투가 일어나면 챔피언이 될 수 있다. 4번 선수는 (3, 4), (2, 4), www.acmicpc.net N명의 선수가 비 내림차순으로 주어진다. 각 선수는 자신의 양쪽선수와 경기를 하며 파워가 더 쌘 선수가 승리한다. 승리시 자신의 파워가 +1 증가하며, 패배한 선수의 양쪽 선수와 연결된다. 위 과정을 반복후, 경기장에 혼자 남아있을때, 그 선수를 챔피언 이라고 한다. 이때, 챔피언이 될 가능성이 있는 선수를 모두 구하는 문제다..
[백준 / BOJ] 1561 놀이 공원 문제 출처 : https://www.acmicpc.net/problem/1561 1561번: 놀이 공원 첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)과 M(1 ≤ M ≤ 10,000)이 빈칸을 사이에 두고 주어진다. 둘째 줄에는 각 놀이기구의 운행 시간을 나타내는 M개의 자연수가 순서대로 주어진다. 운행 시간은 1 이상 30 www.acmicpc.net 놀이공원에 N명의 사람과, M개의 놀이기구가 있다. M개의 놀이기구는 각각 운행시간이 있으며, N명의 사람은 놀이기구를 "현재 탑승가능한 놀이기구중 빠른번호 순서"로 탑승하려고한다. 이때, 마지막사람이 탑승할 놀이기구의 번호를 출력하는 문제다. 풀이 처음 문제를 봤을때는, 스킵하는 방식의 dp를 이용한 문제일거라고 생각했는데, N이 최대 2,00..
[백준 / BOJ] 1800 인터넷 설치 (Java) 문제 출처 : https://www.acmicpc.net/problem/1800 1800번: 인터넷 설치 첫 번째 줄에 N(1 ≤ N ≤ 1,000), 케이블선의 개수 P(1 ≤ P ≤ 10,000), 공짜로 제공하는 케이블선의 개수 K(0 ≤ K < N)이 주어진다. 다음 P개의 줄에는 케이블이 연결하는 두 컴퓨터 번호와 그 가격이 차 www.acmicpc.net 원장선생님이 세미나 실에 인터넷을 설치해주기로 마음을 먹었다. 목표는 N번 컴퓨터가 인터넷에 연결되는것이다. 나머지 컴퓨터는 연결이 안되어있어도 된다. 인터넷을 설치하는데 일정 비용이들며, P개의 인터넷 선이 있고, 이중 K개를 무료로 설치할수있을때, 인터넷을 설치하는 최소 비용을 구하는 문제다. (설치비용은 설치된 인터넷선중 가장 비싼 것에..
[백준 / BOJ] 1114 통나무 자르기 문제 출처 : https://www.acmicpc.net/problem/1114 1114번: 통나무 자르기 첫째 줄에 L, K와 C가 주어진다. L은1,000,000,000보다 작거나 같은 자연수이고, K는 통나무를 자를 수 있는 위치의 개수이다. K와 C는 10,000보다 작거나 같은 자연수이다. 둘째 줄에 통나무를 자를 수 www.acmicpc.net 길이 L인 통나무가 주어지고, 이 통나무를 자를수있는 위치가 K개 주어진다. (통나무는 입력된 위치에서만 자를수 있다.) 통나무를 자를수있는 횟수 C가 주어졌을때, 통나무를 적절히 잘라 통나무의 가장 작은 길이가 최대가 되며, 이때 가장 먼저 잘라야하는 인덱스를 구하는 프로그램을 만드는 문제다. 풀이 결정문제 패턴으로 자주 나오는 문제다. 자를수있는 위..
[백준 / BOJ] 15732 도토리 숨기기 문제 출처 : https://www.acmicpc.net/problem/15732 15732번: 도토리 숨기기 첫째 줄에 상자의 개수 N(1 ≤ N ≤ 1,000,000)과 규칙의 개수 K(1 ≤ K ≤ 10,000), 도토리의 개수 D(1 ≤ D ≤ 1,000,000,000)가 주어진다. 그 후 K개 줄에는 A, B, C(1 ≤ C ≤ A ≤ B ≤ N)가 주어지며 A번 상자부터 www.acmicpc.net 수형이는 N개의 상자에 도토리를 숨기려한다. 이때, 도토리를 숨긴위치를 기억하기 쉽게하기위해 규칙있게 숨긴다. 예를들어, A상자부터 B상자까지 C간격으로 도토리를 숨긴다면, A 상자에 하나를 숨기고, A+C상자에 하나를 숨기고, A+2C상자에 하나를 숨기고..B상자에 마지막하나를 숨긴다. 상자의 수..