![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeHl7k%2FbtqTAEcWatG%2FP48zGZ2Hjamk4oV8YEOzL1%2Fimg.png)
기본적인 BFS 문제 bfs만 짜면 AC받을수 있다. www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net #include #include #include using namespace std; vector v[123]; queue q; int visit[123] = {0}; void bfs(){ while(!q.empty()){ int node = q.front(); q.pop(); for(int i=0; i
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4WFeu%2FbtqTDbIqv9i%2FiEoDeSrRbsHCh7GtKFi2r1%2Fimg.png)
정올 너무 맵다 ㅗㅜㅑ www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net 각 회원들에 대하여 전부 bfs를 돌려본 다음 bfs의 결과 중 최대값이 점수가 된다. #include #include #include #include using namespace std; vector v[56]; queue q; int visit[56] = {0}; vector ans; void bfs(){ while(!q.empty()){ int node = q.front(); q.p..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQBCmf%2FbtqTDIZV3KW%2FcMW2O21uZYcyMqFhKuQQ81%2Fimg.png)
정올 초등부 문제. 아니 초등학생이 이런거 풀수 있어요....? 너무 무섭다 ㄷㄷㄷ www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 이 문제는 사이클의 갯수를 세는 문제이다. 문제에 주어진 케이스의 경우, 1에서 시작하는 사이클 한개, 3에서 시작하는 사이클 한개, 5에서 시작하는 사이클 한개. 이 세가지 케이스에서 나오는 갯수 3이 정답이고, 사이클을 이루는 원소들은 1 3 5이다. 이를 구현하면 #include int arr[123] = {0..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXqyUQ%2FbtqS4MbI1YQ%2FcNt8dW61Akm5EM53IbRQH1%2Fimg.png)
간단한 dfs문제 1번부터 순회하면서 출력해주면 반드시 사전순을 충족하게 짤 수 있다. www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net arr[]은 출력할 답을 저장하는 배열이고, visit[]은 방문여부를 저장해준다. ( 같은 수가 중복으로 나오는것을 방지하기 위해서 ) #include #include using namespace std; int n,m; int arr[10] = {0}; int visit[10] = {0}; void dfs(int k){..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm9SOd%2FbtqS9YJtqHv%2FeYq3117VP4x4vmiSUdywmK%2Fimg.png)
이 문제의 핵심은 최대공약수이다. 이걸 중학교 2학년때 풀었던거같은데 그때 한참걸렸던걸 지금 몇분만에 풀어내는걸 보니 참 감회가 새롭다.. ㅋㅋ 가장 먼 나무 - 가까운 나무로 길이를 구하고, 최대공약수로 나눠준 다음 가장 끝에 +1 해줘서 나무의 전체 수를 구한다. 그다음 입력된 나무의 수인 N을 빼주면 우리가 원하는 답을 찾을 수 있다. #include #include using namespace std; typedef long long int ll; int input[123456] = {0}; int arr[123456] = {0}; ll gcd(ll a, ll b){ while(b!=0){ ll r = a%b; a = b; b = r; } return a; } int main(){ int n; s..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0wjtk%2FbtqTcRi0p9E%2FadMYUQkqfyrd1r9rPfzOik%2Fimg.png)
별 찍기 문제 그냥 구현만 해주면 된다. 문제 내는 사람도 귀찮았나보다 ㅎ www.acmicpc.net/problem/10994 #include int arr[400][400] = {0}; void draw(int pos, int len){ for(int x=pos; x