#include #define Q q.front() using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n, m, a, b, c; //a, b, c는 입력을 위한 변수 cin >> n >> m; vector vec[n+1]; //간선의 정보를 담을 벡터 queue q; //BFS에서 사용할 큐 for(int i=1; i> a >> b >> c; vec[a].push_back({b, c}); vec[b].push_back({a, c}); } for(int i=0; i> a >> b; q.push({a, 0}); //큐에 시작노드와 가중치를 0 으로 넣음 v[a] = true; while(!q.empty()) { //B..
#include #define Q q.front() using namespace std; struct A { A(int a, int b, int c, int d) : x(a), y(b), z(c), value(d) {} int x, y, z, value; }; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int V[4] = {-1, 0, 1, 0}; int H[4] = {0, 1, 0, -1}; int n, m, min = 1e9; cin >> n >> m; if(n==1 && m==1) { cout map[i]; bool v0[n][m]; memset(v0, false, sizeof(bool)*n*m); bool v1[n][m]; memset(v1, ..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int s, ans = 1e9; cin >> s; queue q; q.push(make_tuple(1, 1, 1)); bool v[1001] = {}; //방문확인 while(!q.empty()) { //bfs int now = get(q.front()); int copy = get(q.front()); int value = get(q.front()); q.pop(); if(now == s) { //원하는 개수로 맞추었다면 탐색 종료 ans = value; break; } value++; //수행시간 1 증가 if(now 2) q.push(make_tupl..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while(t--) { int a, b; queue q; cin >> a >> b; q.push(make_tuple(a, b, 0)); while(!q.empty()) { int x = get(q.front()); int y = get(q.front()); int v = get(q.front()); q.pop(); x *= 2; y += 3; v++; if(x < y) q.push(make_tuple(x, y, v)); else if(x==y) { cout
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int a, b, n, m, x, y; cin >> a >> b; //출발, 도착 cin >> n >> m; //개수, 쿼리의 개수 vector vec[n+1]; //간선을 저장할 벡터들 bool v[n]; //방문을 확인할 배열 memset(v, false, n * sizeof(bool)); //방문을 확인할 배열을 0으로 초기화 합니다. while(m--) { //간선을 벡터에 저장합니다. cin >> x >> y; vec[x].emplace_back(y); vec[y].emplace_back(x); } if(a == b) { //출발과 도착이 같은 경..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); int n, a, b; cin >> n; vector vec[n+1]; //간선들을 저장할 벡터들 queue q; //BFS을 위한 큐 bool v[n+1]; //방문했는가? int ans[n+1]; //부모노드 저장 memset(v, false, sizeof(v)); //v을 전부 false로 초기화 for(int i=2; i> a >> b; vec[a].emplace_back(b); vec[b].emplace_back(a); } //root 는 1 for(int i : vec[1]) q.push({1, i}); //큐에 간선에 1이 포함된 것을 집어넣기 v[1] = true..
#include using namespace std; deque num; deque oper; char level(char & op) { //연산자 우선순위 char ret = 2; //곱하기 나누기 if(op == '+' || op == '-') ret = 1; //더하기 빼기 return ret; } long long left(char & op) { //처음 그리고 두번째 숫자의 계산 long long ret = 0; if(op == '+') ret = num.front() + (*(num.begin()+1)); else if(op == '-') ret = num.front() - (*(num.begin()+1)); else if(op == '*') ret = num.front() * (*(num.b..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); deque deq; int q, rotate=0; //덱의 앞의 위치 3시 0 6시 1 9시 2 12시 3 int ball=0, window=0; //공, 가림막 개수 char c; cin >> q; char s[10] = {}; while(q--) { cin >> s; if(s[2] == 's') { //push 뒤로 집어넣습니다. cin >> c; if(c == 'b') { //공 ++ball; deq.emplace_back(true); } else { //가림막 ++window; deq.emplace_back(false); } } else if(s[2..
#include int main(void) { char arr[100] = {}; char str[51] = {}; scanf("%s", str); int left = 50, right = 50; //덱의 왼쪽 끝과 오른쪽 끝을 같은 곳에 위치 시켜둡니다. for(int i=0; str[i] != '\0'; i++) { if(arr[left] < str[i]) { //초기화를 0으로 했기에 처음 덱에 집어 넣을때는 덱의 오른쪽에 들어가게 됩니다. arr[right++] = str[i]; //값을 넣은 다음 right을 1 증가 시킵니다. } else arr[--left] = str[i]; //right와는 달리 left는 먼저 1 감소 시킨다음 값을 집어넣습니다. } for(int i=left; i
- Total
- Today
- Yesterday
- 트리
- 6198번
- find
- 그래프
- 백준
- 그리디
- 16120번
- 최대공약수
- Mo.s
- BFS
- C언어
- 스택
- 세그먼트 트리
- 카드
- 1835번
- union
- C++
- Krustal
- 1835
- 6198
- 최소 스패닝 트리
- DP
- 오프라인 쿼리
- 플로이드
- 덱
- 누적합
- 정렬
- 누적 합
- java
- DFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |