본문 바로가기

알고리즘

[B3055] - 탈출 https://www.acmicpc.net/problem/3055물을 먼저 시간에 따라 이동시킨 후 고슴도치가가 그 시간내에 목적지에 도달할 수 있는지 확인하는 BFS문제이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#include#includeusing namespace std;char a[51][51];int d[51][51];int d2[51][51];int dx[] = { 0,0,-1,1 };int dy[] = { -1,1,0,0 };int main() { i.. 더보기
[B15990] - 1,2,3 더하기 5 https://www.acmicpc.net/problem/15990 마지막항이 무엇인지 고려하여 점화식을 세우면 된다. 12345678910111213141516171819#includeusing namespace std;long long d[100001][4];int main() { int T; cin >> T; d[1][1] = d[2][2] = d[3][3] = 1; d[3][1] = d[3][2] = 1; for (int i = 4; i > n; cout 더보기
[B1991] - 트리 순회 https://www.acmicpc.net/problem/1991 postorder inorder preorder에 따라 출력하면 된다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include #include using namespace std;struct tree { int left; int right;};tree a[52];void postorder(int x) { if (x == -1) return; postorder(a[x].left); postorder(a[x].right); cout > right; int x = node - 'A'; if(left=='.') a[x].lef.. 더보기
[B1463] - 1로 만들기 https://www.acmicpc.net/problem/1463주어진 조건에 따라 점화식을 세우면 된다. 123456789101112131415161718192021222324#include using namespace std;int main(){ int n; cin >> n; int d[n + 1] = { 0, }; for (int i = 0; i = 1; i--) { if (i % 3 == 0) { if (d[i / 3] > d[i] + 1) d[i / 3] = d[i] + 1; } if (i % 2 == 0) { if (d[i / 2] > d[i] + 1) d[i / 2] = d[i] + 1; } if (d[i - 1] > d[i] + 1) d[i - 1] = d[i] + 1; } cout 더보기
[B12000] - Circular Barn(Bronze) https://www.acmicpc.net/problem/12000원형으로 돌기 때문에 index의 처리만 주의해주면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041#include #include using namespace std;int main(){ int n; cin >> n; vectorr(n); vectorcheck(n); for (int re = 0; re r[i]; int ans = 2147483647; int sum; for (int i = 0; i 더보기
[B5588] - 별자리 찾기 https://www.acmicpc.net/problem/5588찾고 싶은 별자리 모양을 하나의 기준점으로부터 벡터를 shape으로 저장한 후 입력받은 전체 별들의 각각의 위치에서 shape에 들어있는 벡터를 더하면서 일치하는지 확인하면 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include #include using namespace std;int main(){ int m; cin >> m; pairans = { 0,0 }; vectorstar(m); vectorshape(m - 1); for (int i = 0; i > star[i].f.. 더보기
[B16113] - 시그널 https://www.acmicpc.net/problem/16113입력받은 문자열을 5개의 행으로 나누어주고처럼 직접 5*3의 박스내에서 0-9까지의 모양을 구현하고 1의 경우를 따로 처리해주면 된다. 맨 처음에 1이 들어온다면 #. 이나 # 의 모양이 되고 마지막이 1인 경우 .#이 되는 경우만 따로 만들어서 처리해주면 된다.#. # .##. # .##. # .##. # .# 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697.. 더보기
[B15787] - 기차가 어둠을 헤치고 https://www.acmicpc.net/problem/15787 비트마스크로 구현하면 되며 vector의 크기를 결정을 잘 해야 한다.vectord에는 2^1부터 2^20승이 더한 값이 들어갈 수 있으므로 2^21의 크기로 잡아주었다.| 는 승차, &~는 하차를 의미한다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#include #include using namespace std;int main(){ int n, m; cin >> n >> m; vectord((1 > a >> b; train[a] = (train[a] | (1 a >> b; train[a] = (tra.. 더보기
[B14467] - 소가 길을 건너간 이유1 https://www.acmicpc.net/problem/14467소의 상태에 대한 입력이 들어왔을때 이전 상태와 비교하여 정답을 구해준다.123456789101112131415161718192021222324252627282930313233343536#include #include using namespace std;int main(){ int n; cin >> n; vectorcow(11); int ans = 0; for (int i = 0; i > u >> v; if (v == 0)//-1 { if (cow[u] == 0) cow[u] = -1; else if (cow[u] == 1) { cow[u] = -1; ans++; } } else//1 { if (cow[u] == 0) cow[u] = 1;.. 더보기
[B9881] - Ski Course Design https://www.acmicpc.net/problem/9881산의 개수가 최대 1000개, 산의 높이는 0부터 100까지 이므로 최대 1000*101번의 연산만 하면 되므로 기준이 되는 산의 높이를 0부터 100까지 돌려본다. 높이기준이 i라고 했을 때 높이가 i+17일 때 까지는 세금을 내지 않는다. 즉 산의 높이 중 i보다 작은 경우와 i+17보다 큰 경우의 비용만 구해서 더해주고그 비용 중 가장 작은 값을 출력한다. 1234567891011121314151617181920212223242526#include #include using namespace std;int main(){ int n; cin >> n; vectora(n); int ans = 2147483647; for (int i = 0.. 더보기