본문 바로가기

전체 글

(2344)
(C++) - 백준(BOJ) 2252번 : 줄 세우기 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 위상정렬 문제였습니다. 풀이방법 1. 단 방향그래프로 만듭니다. 2. dfs를 수행하면서 모두 호출한 후에는 stack에 정점을 push해줍니다. 3. 모든 원소를 stack pop하면서 출력합니다. Code indegree이용하는 법 #include #include #include using namespace std; int N,M,u,v,ins[320..
(C++) - 백준(BOJ) 11723 : 집합 #include #include using namespace std; int M, S, n; char k[10]; int main() { scanf("%d", &M); while (M--) { scanf("%s", k); if (!strcmp(k, "add")) { scanf("%d", &n); n--; S = (S | (1
(C++) - 백준(BOJ)코딩 1149번 : RGB거리 www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 2차원 bottom up dp로 풀었습니다. 풀이방법 D[i][j] = i번째 집을 j색으로 칠할 때 최소 비용 빨강:1 초록:2 파랑:3 D[1][1] = A[1][1]; D[1][2] = A[1][2]; D[1][3] = A[1][3]; A[i][j] = 입력 j로 칠했을 때 i-1, i+1번째 집은 j색으로 칠할 수 없다. 1.i번째 집을 R로 칠했을 때 (2
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1967번:트리의 지름 답 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #include #include #include using namespace std;int n, u, v, w;struct Edge { int to; int cost; Edge(int to, int cost) : to(to), cost(cost) { }};vector a[10001];int c[10001];int d[10001];void bfs(int start) { memset(d, 0, sizeof(d)); memset(c, 0, sizeof(c)); queue q; c[start] = 1; q...
(C++) - 백준(BOJ) 1991번 : 트리 순회 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net 트리순회를 구현해보는 문제였습니다. 풀이방법 전위순회(preorder) : 루트 -> 왼쪽 자식 -> 오른쪽 자식 중위순회(inorder) : 왼쪽 자식 -> 루트 -> 오른쪽 자식 후위순회(postorder) : 왼쪽 자식 -> 오른쪽 자식 -> 루트 Code #include using namespace std; int n, a[26][2]; void preOrder(int x){ if(x..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 10026번:적록색약 답 R,G,B각각에 대해 DFS를 시행한다. R:1, G:2, B:31234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include using namespace std;char k;int h, w, a[101][101], b[101][101], acheck[101][101], bcheck[101][101], n, acnt,bcnt, dh[] = { 0,0,-1,1 }, dw[] = { -1,1,0,0 };//a는 정상인 b는 색약void aDFS(int h, int w, int color,int acnt){ a..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1850번:최대공약수 답 123456789101112131415#include using namespace std;//a,b의 최대공약수가 1의 개수이다unsigned long long GCD(long long a, long long b){ if (b == 0) { return a; } return GCD(b, a%b);}int main() { unsigned long long a, b, print; cin >> a >> b; print = GCD(a, b); while(print--) cout
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 3036번:링 답 1234567891011121314151617181920212223#include using namespace std;int GCD(int a, int b){ if (a > T; int *c = new int[T]; for (int i = 0; i > c[i]; } for (int i = 1; i