https://www.acmicpc.net/problem/17503 17503번: 맥주 축제 첫 번째 줄에 축제가 열리는 기간 N (1 ≤ N ≤ 200,000) 과, 채워야 하는 선호도의 합 M (1 ≤ M 도수기준 오름차순 정렬 2. 선호도를 sum에다 누적해주고 우선순위 큐에 도수가 낮은거부터 순서대로 선호도에 -를 붙혀서 오름차순으로 정렬해준다. 3. 우선순위 큐pq의 사이즈 pq.size()값이 n이랑 같아지면 sum이 m 이상인지 확인 후 이상이면 현재 beer의 도수를 출력한다. 이유는 beer 벡터를 알콜 도수가 높은 순서대로 알콜도수 기준 오름차순 정리를 했기 때문에 지금 조건의 알콜 도수가 최소 도수이다. 4. 만약 3번에서 안걸러지고 우선순위 큐의 갯수가 n을 넘었다면 pq.top()..
Algorithm/Beakjoon
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 1. Logic 이 문제에서 mid값은 공유기와 공유기 사이의 거리를 뜻한다. 이분탐색으로 공유기와 공유기 사이의 거리를 구한 후 wifi[0]~wifi[n-1]까지 탐색하며 공유기간의 사이가 mid보다 큰거나 같을 때를 count해주며 count가 공유기 설치대수 m보다 크거나 같으면 start를 mid로 옮겨, 작으면 end를 mid로 옮겨 ..
https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 1. Logic 이 문제에서는 이분탐색으로 찾으려는 mid값이 무엇인지를 정하는게 중요하다고 생각한다. 내가 정한 mid값은 블루레이의 길이이다. 강의 영상의 순서대로 블루레이에 넣어야되기 때문에 이분탐색의 check()함수는 블루레이에 순서대로 영상이 들어가는지 판단해주면 된다. 우리가 찾는 mid값은 가능한 값들중에 최솟값이기 때문에 가능한 mid값의 구간은 FFFF[FT]TTTT가 된다. 그중 가능..
https://www.acmicpc.net/problem/17124 17124번: 두 개의 배열 정수 배열 A 와 B가 있다. A는 총 n개의 서로 다른 양의 정수를 포함하고 B는 총 m개의 서로 다른 양의 정수를 포함한다. A, B를 이용해서 길이가 n인 새로운 배열 C를 만들어보자. C[i] 는 배열 B에 있 www.acmicpc.net 1. Logic 로직을 보면 a배열, b배열을 입력받는다. b배열을 오름차순으로 정리한다. a[0]~a[n-1]까지 차례로 이분탐색을 해서 b[start] target 인 값을 구한후 target-b[start], b[end]-target의 절댓값 중 더 작은 값을 선택해서 더해준다. 출력한다. 2. Code #include #include #include #incl..
https://www.acmicpc.net/problem/13702 13702번: 이상한 술집 프로그래밍 대회 전날, 은상과 친구들은 이상한 술집에 모였다. 이 술집에서 막걸리를 시키면 주전자의 용량은 똑같았으나 안에 들어 있는 막걸리 용량은 랜덤이다. 즉 한 번 주문에 막걸리 용 www.acmicpc.net 1. Logic 막걸리 를 최대한 많이 따를 수 있는 만큼 따르고 나머지는 버린다고 했으니 우리는 K잔을 만들 수 있는 최대 값을 찾아야 한다. 우리가 탐색하는 부분에 대해서 정답은 TTT[TF]FFF 중간 대괄호부분에서 정답이 결정된다. 우리가 구해야 하는 값은 가능한 수들중에서 최댓값이기 때문에 left를 반환하면 된다. 2. Code #include #include #include using ..
https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 1. Logic 이 문제는 unordered_map을 활용한 풀이, 이분탐색을 활용한 풀이 총 두가지 방법으로 풀이 가능하다. 2. Code 해시 맵 풀이 #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) ..
https://www.acmicpc.net/problem/17266 17266번: 어두운 굴다리 인하대학교 후문 뒤쪽에는 어두운 굴다리가 있다. 겁쟁이 상빈이는 길이 조금이라도 어둡다면 가지 않는다. 따라서 굴다리로 가면 최단거리로 집까지 갈수 있지만, 굴다리는 어둡기 때문에 빙 www.acmicpc.net 1. Logic 값이 참이 되는 구간을 살펴보면 정답 mid를 기준으로 0~left까지는 false, right~n까지는 true이다. 여기서는 참이 되는 값중 최솟값을 구해야 하기 때문에 right를 반환해 주면 된다. 2. Code #include #include using namespace std; int n, m; vector input; int binarySearch() { int start..
https://www.acmicpc.net/problem/2240 2240번: 자두나무 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어 www.acmicpc.net 1. Logic 먼저 DP테이블이 의미하는 것은 n초에 먹을 수 있는 자두의 최대 갯수이다. dp[자두떨어지는 시간][움직인횟수][위치한나무번호] 부분문제를 쪼개보자면 시작할때는 1. 1번 나무에서 시작하는 경우 2. 2번 나무에서 시작하는 경우 이후에는 1-1. 1번나무에서 받아먹고 계속 1번에 있는 경우 1-2. 1번나무에서 받아먹고 2번나무로 옮기는 경우 2. 2번나무에서 받아먹고 계속 2번에 있는 ..
https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 1. Logic for문을 0부터 돌기때문에 내 앞에 나오는 애들은 전부 나보다 키가 작다. 그래서 내 앞에 키 큰 사람이 몇명올지 그 사람들의 자리를 남겨 놓는게 목적이다. 2. Code #include using namespace std; int seat[10]; int main() { int n; cin >> n; for(int i = 0; i < n; i++) { //입력 받는 횟수..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 1. Logic 문제 요약 : 톱니바퀴와 맞닿아있는 톱니가 다른 극이면 톱니를 반대방향으로 움직이고 같은 극이면 톱니를 움직이지 않는다. 각 톱니별 부분 문제를 생각해보자면 회전방향 \ 톱니번호 1번 톱니 2번 톱니 3번 톱니 4번 톱니 시계방향 2번 > 반시계 3번 > 시계 4번 > 반시계 1번 > 반시계 3번 > 반시계 4번 > 시계 1번 > 시계 2번 > 반시계 4번 > 반시계 1번 >..