• (백준 알고리즘 문제풀이) 10816번 숫자 카드 2

    문제 문제 링크 어떻게 접근할 것인가 이 문제는 정렬 후 두 수의 upper과 lower bound를 구해서 두 차이를 빼주는 식으로 진행하면 깔끔한 문제이다! 코드 #include <cstdio> #include <vector> #include <algorithm> using namespace std; int main(){ int n, m, k; scanf("%d", &n); vector<int> card(n); for(int i = 0; i < n;...


  • (백준 알고리즘 문제풀이) 6603번 로또

    문제 문제 링크 어떻게 접근할 것인가 고민하다가 DFS를 이용하기로 했다. 사이즈가 6인 어레이를 하나 만들고 DFS를 이용해서 숫자를 어레이를 하나 넣어주면서 6개가 차면 이를 출력한다. 코드 #include <cstdio> int v[6], arr[50], k; void dfs(int begin, int cnt){ if(cnt == 6){ for(int i = 0; i < 6; i++)printf("%d ", v[i]);...


  • (백준 알고리즘 문제풀이) 2583번 영역 구하기

    문제 문제 링크 어떻게 접근할 것인가 일단 사각형의 좌표가 주어지면 사각형이 있는 위치를 다 1로 만든다. 그리고 나서 쭉 돌면서 빈칸에 대해서 BFS를 진행하여 빈칸 갯수를 찾아서 ans 벡터에 넣어준다. 마지막으로 결과를 sort해서 출력하면 끝이다! 코드 #include <cstdio> #include <queue> #include <vector> #include <algorithm> #define pii pair<int, int> using namespace...


  • (백준 알고리즘 문제풀이) 14502번 연구소

    문제 문제 링크 어떻게 접근할 것인가 DFS를 이용해서 벽을 3개 설치할 수 있는 경우의 수를 모두 찾아주고 각 경우에서 BFS를 진행한다. BFS를 진행한 후에 남은 빈 공간의 갯수를 세서 MAX보다 크면 MAX를 업데이트 해준다. 코드 #include <cstdio> #include <vector> #include <queue> #define pii pair<int, int> using namespace std; int d[4][2]...


  • (백준 알고리즘 문제풀이) 11724번 연결 요소의 개수

    문제 문제 링크 어떻게 접근할 것인가 이 문제는 같은 그룹의 원소를 찾을 수 있는 Union Find 알고리즘을 사용하면 된다. 각 엣지를 받을 때 마다 두 노드를 Union 시켜준다. 여기서 원소의 parent가 0인 친구의 개수가 Connected Component의 개수이다. 코드 #include <cstdio> char buf[1 << 17]; inline char read() { static int...