본문 바로가기

코딩

(102)
[하드웨어] STM32를 이용한 방공시스템 제작 울학교에서 이번 학기에 내가 진행한 프로젝트이다. 통틀어서 1등을 먹었는데, 기록해두면 나중에 면접이든 뭐든 쓸모가 있지 않을까 싶어서 이렇게 기록으로 남겨둔다. 또 혹시 아는가 내 후배들이 내 글을 보고 도움을 받을지... 일단 전체 코드부터 올린다. ↓클릭시 다운 #include "misc.h" #include "stm32f10x.h" #include "stm32f10x_exti.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_dma.h" #include "stm32f10x_usart.h" #include "stm32f10x_adc.h" #include "lcd.h" #include "Touch.h" #incl..
백준 2606 바이러스 1번 컴퓨터를 루트로 하여 BFS탐색을 하면서 처음 방문하는 노드의 갯수를 새면 끝 adj 배열을 만들때 머가 가장 빠르고 메모리도 적당할까~ 생각해봤는데, 배열은 벡터가 아닌 2차원 배열을 쓰고 각 노드별로 연결된 링크의 갯수를 미리 저장하면 adj의 자료구조로 링크드리스트를 쓸때의 장점과 배열을 쓸때의 장점을 둘 다 가져올거 같아서 이렇게 활용해 보았다. 괜찮은듯. #include #include #include #include #include using namespace std; int adj[101][101]; int adjSize[101]; int computerNum; int linkNum; bool isVisit[101]; int main() { cin >> computerNum; cin >..
백준 2178 미로 이것도 BFS문제다. 루트가 (0,0)인 그래프에서 노드 (N,M)의 깊이를 구하는 문제로 모델링이 가능하다. 한편, 백준 7576 : 토마토(http://deque.tistory.com/38) 문제와 다른점은 시작점이 하나이기 때문에 지금 방문한 노드의 깊이가 최적화 되어 있는 지에 대한 검사를 하지 않아도 된다. #define INT_MAX_ 2147480000 #include #include #include #include #include using namespace std; int N, M; int arr[101][101]; bool isVisit[101][101]; int di[4] = { -1, 0, 1, 0}; int dj[4] = { 0, +1, 0, -1}; int main() { cin..
백준 7569 토마토 백준 7576 토마토의 확장 문제 : http://deque.tistory.com/38 이런 날로 먹을수 있는 문제가 있었다면 7576을 풀때 pair를 안쓰고 2차원 배열을 쓰는건데... 약간 신경쓴 부분은 queue에 int 하나만 넣고 싶어서 K, I, J를 int 하나로 해싱했다. #define INT_MAX_ 2147480000 #include #include #include #include using namespace std; int M, N, H; int day; int max_day = 0; int box[101][101][101]; int normalTomato[1000001][3]; int normalTomatoSize = 0; int date[101][101][101]; int mai..
백준 7576 토마토 이제 방학이 되었으니 다시 알고리즘을 조금씩 해야하지 않을까 싶어서 다시 시작 알고리즘이랑 안드로이드랑 병행해서 공부 중임 백준 7576 : 토마토 이 문제는 BFS 문제인게 뻔히 보인다. 다만 탐색을 할때 다음 탐색되는 노드의 레벨이 원래 계산되어 있던 레벨보다 더 좋은 레벨이면 갱신을 해줘야 한다. #define INT_MAX_ 2147480000 #include #include #include #include using namespace std; int M, N; int day; int max_day = 0; int box[1001][1001]; pair normalTomato[1000001]; int normalTomatoSize = 0; int date[1001][1001]; int main()..
백준 1967 트리의 지름 #define _CRT_SECURE_NO_WARNINGS //#define _FILE_INPUT_ #include #include #include #include #include #include #include using namespace std; class TreeNode { public: int num; vector connections; //node, dist int maxDist_first = 0; int maxDist_second = 0; TreeNode() { num = 0; } TreeNode(int num) : num(num) {} void pushSonDist(int dist) { if (dist > maxDist_second) { maxDist_second = dist; if (dist..
백준 2250 트리의 높이와 너비 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include using namespace std; class TreeNode { public: int data; int rowNum; pair connections; TreeNode() { data = 0; } TreeNode(int data) : data(data) {} }; int main() { int size; scanf("%d", &size); vector treenodeVector; treenodeVector.push_back(new TreeNode(0)); for (int i = 1; i connections.first] = true; if (treen..
백준 1167 트리의 지름 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int n; class TreeNode { public: int data; vector connections; //{node, dist} TreeNode() { data = 0; } TreeNode(int data) : data(data) {} }; class Tree { public: TreeNode head; int size; Tree(TreeNode head, int size) : head(head), size(size) {} }; int bfsSearch(int size, int startNodeNum, int& maxDis..