본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )/이분탐색,삼분탐색

(15)
[백준 / BOJ] 1030 프렉탈 평면 (Java) 문제 출처 : https://www.acmicpc.net/problem/1030 1030번: 프렉탈 평면 첫째 줄에 7개의 정수 s, N, K, R1, R2, C1, C2가 주어진다. www.acmicpc.net 7개의 정수 s, N, K, R1, R2, C1, C2 가 주어진다. 1*1그리드는 매 초마다 N*N그리드로 나뉘어지며 이때, 나뉜 정사각형이 흰색이라면, 가운데 K*K칸이 검은색으로 변한다. s초가 지났을때, R1,C1에서 R2,C2그리드를 출력하는 문제다. 풀이 수학?과 분할정복으로 푸는 문제였다. 문제를 풀기위해 우선, N*N 그리드가 매초마다 K*K조각으로 나누어질때, s초가 지난후 위치하는 좌표를 구해야한다. 예를들어, 1*1그리드가 매 초마다 3*3의 조각으로 나뉠때, 2초가 지난후 ..
[백준 / 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상자에 마지막하나를 숨긴다. 상자의 수..
[백준 / BOJ] 1087 쥐 잡기 문제 출처 : https://www.acmicpc.net/problem/1087 1087번: 쥐 잡기 첫째 줄에 쥐의 수 N이 주어진다. N은 2보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 각 쥐의 시작 위치와 속도가 주어진다. 이 값은 모두 절댓값이 1,000보다 작거나 같은 정수이 www.acmicpc.net 김지민은 쥐를 잡는 게임을 만들었다. 쥐는 각자의 시작위치(x,y)부터 1초마다 (dy,dx)방향으로 움직이며, 이때 속력은 항상같다. 쥐는 한변의 길이가 L인 x축에 평행인 정사각형 모양의 울타리로 쥐를 가둔다음, 판 밖으로 밀어내면 잡힌다. (쥐가 울타리의 경계에 있다면 잡힌쥐가 아니다) 한번에 모든 쥐를 절대로 잡을 수 없는 가장 큰 L을 구하는 프로그램을 만드는 문제..
[백준 / BOJ] 1253 좋다 문제 출처 : www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net N개의 수열이 주어진다. 이때, N개의 수 중에서, 어떤 수가 다른 수 두개의 합으로 나타내진다면, 그 수를 좋다 라고한다. 좋은수가 몇개인지 구하는 문제다. (위치가 다르면 값이 같아도 다른 수 이다.) 풀이 완전탐색으로 풀경우 O(N^3)이 되어서 시간초과가 난다. 시간초과를 피하기 위해, 이분탐색으로 풀은 문제다. 로직은 간단한데, 수열 N에서 i번째수를 Ni라 할때, 1. 좋은 수 인지 판단할 수 Ni를 하나 지정한다..
[백준 / BOJ] 19637 IF문 좀 대신 써줘 문제 출처 : www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 게임 개발자 밀리는 캐릭터가 가진 전투력을 기준으로 칭호를 붙여주려고 한다. 캐릭터는 자신보다 큰거나 같은중에 가장작은수를 기준으로 칭호를 받는다 예를들어, 캐릭터의 전투력이 10이고 전투력이 10 보다 작거나같으면 A칭호를 받을때, A칭호를 받게된다. 풀이 칭호의 갯수가 100000 = 10만개 나올수있고 캐릭터의 수가 10만개 나올수있다. 따라서 완전..