[백준] 2250 트리의 높이와 너비
2021. 2. 20. 20:59
Problem set
2250번: 트리의 높이와 너비 첫째 줄에 노드의 개수를 나타내는 정수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다. www.acmicpc.net #include #include #define left _left #define right _right using namespace std; struct Node { int left, right; int order, depth; }; Node a[10001]; int left[10001]; int right[10001]; int cnt[10001]; int order = 0; void inorder(int node, int depth) { if..
[백준] 1991 트리 순회
2021. 2. 20. 20:58
Problem set
1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net #include using namespace std; struct Node { int left; int right; }; Node a[50]; void preorder(int x) { if (x == -1) return; cout x >> y >> z; x = x-'A'; if (y == '.') { a[x].left = -1; } else { a[x].left = y-'A'; } if (z == '.') { a[x].right = -1; } else { ..
[백준] 1261 알고스팟
2021. 2. 20. 20:55
Problem set
1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net #include #include using namespace std; int d[555][555]; int a[555][555]; int n,m; int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; int main() { scanf("%d %d",&m,&n); for (int i=0; i
[백준] 13549 숨박꼭질 3
2021. 2. 20. 20:53
Problem set
13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net // 큐 #include #include #include using namespace std; bool c[1000000]; int d[1000000]; int MAX = 1000000; int main() { int n, m; cin >> n >> m; c[n] = true; d[n] = 0; queue q; queue next_queue; q.push(n); while (!q.empty()) { int now = q.front..
[백준] 14226 이모티콘
2021. 2. 20. 20:47
Problem set
14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net #include #include #include #include using namespace std; int d[1001][1001]; int main() { int n; cin >> n; memset(d,-1,sizeof(d)); queue q; q.push(make_pair(1,0)); d[1][0] = 0; while (!q.empty()) { int s, c; tie(s, c) = q.front(); q.pop(); if (d[s][s] == -1) { d[..
[백준] 13913 숨바꼭질 4
2021. 2. 20. 20:46
Problem set
13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include #include using namespace std; const int MAX = 200000; bool check[MAX+1]; int dist[MAX+1]; int from[MAX+1]; void print(int n, int m) { if (n != m) { print(n, from[m]); } cout n >> m; check[n] = true; dist[n] = 0; queue q; q.p..
[백준] 1697 숨바꼭질
2021. 2. 20. 20:43
Problem set
1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include using namespace std; const int MAX = 200000; bool check[MAX+1]; int dist[MAX+1]; int main() { int n, m; cin >> n >> m; check[n] = true; dist[n] = 0; queue q; q.push(n); while (!q.empty()) { int now = q.front(); q.pop(); if (now..
[백준] 2146 다리 만들기
2021. 2. 20. 20:41
Problem set
2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net #include #include using namespace std; int a[100][100]; int g[100][100]; int d[100][100]; int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; int main() { int n; scanf("%d",&n); for (int i=0; i