백준 5

[백준] C++ 1744(수 묶기)

#include #include using namespace std;int arr[51];int arr2[51];int main(void){ int a=0; cin>>a; int count1=0; int count2=0; for(int i=0; i>num; if(num>0) { arr[count1]=-num; count1++; } else { arr2[count2]=num; count2++; } } sort(arr,arr+count1); sort(arr2,arr2+count2); int sum=0; for(int i=0; i 이 문제는 수를 효율적으로 묶어 합이 최대가 되게 만들어야 한다. 이 문제는 생각보다 조건이 많이 필요하다.1.양수*양수일 때 최대가 되려면??2..

백준/그리디 2024.06.29

[백준]C++ 11000(강의실 배정)

#include #include using namespace std;priority_queue > Q;priority_queue Q2;int main(void){ int a=0; cin>>a; for(int i=0; i>num1>>num2; Q.push(make_pair(-num1,num2)); } int count=1; int min=0; Q2.push(0); while(!Q.empty()) { int num1=-Q.top().first; int num2=Q.top().second; Q.pop(); if(num1이 문제는 강의실의 갯수를 가장 적게 사용하는 것이 목표이다.나는 우선 각 수업의 시작시간을 기준으로 우선순위 큐에 집어 넣었다.(작은게 우선이기 때문에 -를 붙여서 넣어줌) 그..

백준/그리디 2024.06.29

[백준]C++ 14052번(연구소)

#include #include using namespace std;queue > Q;int arr[10][10];void BFS(int arr[10][10]);void DFS(int row, int col,int arr[10][10],int count);int max1=0;int a=0;int b=0;int main(void){ cin>>a>>b; for(int i=0; i>arr[i][j]; } } DFS(0,0,arr,0); cout-1&&j+1-1&&j-1-1&&i+1-1&&i-1max1) { max1=count; }}이 문제는 바이스러 문제이다. 꽤나 흥미롭다.일단 벽을 3개 무조건 세워야하는 조건이 있다.최대한 많은 안전구역을 어떻게 구할까? 나는 우선 2가지의 조건을 생각했다1.3..

백준/탐색 2024.06.27

[백준]C++ 11742(연결 요소의 개수)

#include #include using namespace std;vector v[1001];int visited[1001];void DFS(int a);int main(void){ int a=0; int b=0; cin>>a>>b; for(int i=0; i>num1>>num2; v[num1].push_back(num2); v[num2].push_back(num1); } int count=0; for(int i=1; i 이 문제는 처음에 연결 요소의 개수? 이게 무슨말인지 싶었다.이거만 이해하면 풀기는 어렵지 않다.나는 이 문제를 DFS로 풀었다.처음에 1부터 시작해서 깊게 탐색을 한다. 1과 연결된 부분은 모두 방문처리하고, 방문처리가 된 정점은 다시 방문하지 않는다.for(int i..

백준/탐색 2024.06.27