BOJ 7795 먹을 것인가 먹힐 것인가
·
알고리즘/BOJ
www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 �� www.acmicpc.net 집합 A와 B가 주어지면 A의 각 원소를 B에서 순회하면서 그 원소보다 작은 것들이 몇 개 존재하는지를 알아내는 문제다. 처음엔 투 포인터로 접근했는데 갈수록 막히는 것 같아서 이분탐색으로 해결했다. 집합 A와 B를 입력받고 두 집합을 정렬한다 A집합의 원소를 B집합에서 순회하면서 각 원소보다 큰 원소들이 몇개 있는지 카운트한다 cnt 변수에 더해준다 매..
BOJ 1806 부분합
·
알고리즘/BOJ
www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 투 포인터를 활용해서 푸는 문제였다. 문제를 이해하는데 어려운 부분은 없었는데 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이 나는 저 S 이상이 아니라 정확히 S가 되는 것만 카운팅 되는 줄 알고 30분을 소비했다... #include #include using namespace std; int ar[100001], n, m, s, e, sum, a..
BOJ 13414 수강 신청
·
알고리즘/BOJ
www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 수강신청 버튼이 활성화된 후, 수강신청 버튼을 조금이라도 빨리 누른 학생이 대기목록에 먼저 들어간다. 이미 대기열에 들어가 있는 상태에서 다시 수강신청 버튼을 누를 경우 대기목록의 맨 뒤로 밀려난다. 잠시 후 수강신청 버튼이 비활성화되면, 대기목록에서 가장 앞에 있는 학생부터 자동으로 수강신청이 완료되며, 수강 가능 인원이 꽉 찰 경우 나머지 대기목록은 무시하고 수강신청을 종료한다. 위 조건을 만족..
BOJ 1059 수2
·
알고리즘/BOJ
www.acmicpc.net/problem/1059 1059번: 수2 첫째 줄에 Lucky Set에 포함된 숫자의 개수 L이 주어진다. 둘째 줄에는 L개의 수가 주어진다. 이 수는 1,000보다 작거나 같은 자연수이고, L은 50보다 작거나 같은 자연수이다. 그리고 중복되지 않는다 www.acmicpc.net 일단 처음 봤을 때 문제 이해가 안된다.. 질문게시판을 참고해서 이해했는데 lucky set이 주어지고 n이 주어지면 lucky set의 원소에서 n을 포함하고 있는 구간을 찾으면 된다. 무슨 소리냐면 1 7 4 10 n = 2 라면 2를 포함하는 lucky set은 1과 7이고 2~6 사이의 구간 [2, 6]에서 2를 포함하는 구간을 따로 나눠서 세면 된다. [2, 3], [2, 4], [2, 5..
BOJ 11000 강의실 배정
·
알고리즘/BOJ
www.acmicpc.net/problem/1100011000번: 강의실 배정첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109)www.acmicpc.net강의실 배정 문제다. 어떻게 하면 최대한 적은 강의실을 사용해서 모든 강의를 할 것인지를 찾아내면 된다.처음에는 회의실 배정 문제랑 비슷한 문제인 것 같아서 강의 종료 시점을 기준으로 정렬해서 제출했는데 틀렸다.찾아보니 priority_queue를 사용해서 시작시간을 기준으로 해결해야 한다.큐는 최소 힙으로 선언해주고 큐에는 종료시간만 삽입한다. 대략적인 접근방법은 이렇다.벡터에 pair로 시작시간, 종료시간을 입력받는다시작시간을 기준으로 정렬하고 priority_..
BOJ 2437 저울
·
알고리즘/BOJ
www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓� www.acmicpc.net 추가 주어진다면 오름차순 정렬을 해주고 현재까지의 누적합 + 1 이 현재의 추보다 더 크다면 그 누적합 + 1 이 구할 수 없는 최솟값이 된다. 그 이하의 수들은 현재까지의 추들로 모두 조합할 수 있다. #include #include using namespace std; int ar[1001]; int main() { int n; cin >> n; for (int i = 0; i > ar[i..