-
1225. 암호생성기알고리즘/SW Expert Academy 2020. 3. 24. 22:09
이번 문제는 너무 쉽다.. 그래서 딱히 설명보다는 그냥 코드만 남겨두도록 하겠다.. #include #include using namespace std; int main() { for(int k=1; k> num; for(int i=0; i> a; q.push(a); } int count = 1; while(q.back()>0){ if(count>5) count=1; int b = q.front(); b-=count; q.pop(); q.push(b); count++; } if(q.back()
-
1224.계산기3알고리즘/SW Expert Academy 2020. 3. 24. 20:42
드디어 계산기 문제의 마지막 3번째이다. 이전과 똑같이만 이번에는 '(' 와 ')'가 등장해서 살짝 다른 계산이 필요했다. 괄호는 무조건 넣어주고 괄호의 짝이 맞아떨어지게되면 스택에 저장된 괄호의 모든 연산자를 pop해야한다는 것이 특징이었다. 생각보다 오랜시간이 걸리지 않은 문제였다. 물론 나보다 간단하게 푼사람도 많을 것이라고 생각한다. 하지만 스스로 생각하면서 뚝딱 풀어낸 것에 의의를 두어야겠다. #include #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; cin >> str; stack s; // 피연산자들이 담길 stack queue q; //..
-
1223.계산기2알고리즘/SW Expert Academy 2020. 3. 23. 21:59
이번에 풀어볼 문제는 SW expert에 있는 계산기2이다. 계산기1과 달라진 점은 예상했던대로 예외처리가 늘어나 '+' 뿐아니라 '*'도 비교해야 한다는 것이다. 역시나 예외처리를 잘해주면 쉽게 풀 수 있을 것 같다. 나는 연산자의 경우 Stack에 넣고 피연산자는 Queue에 넣어서 계산하도록 했다. 후위계산법의 방식은 다른 블로그에 많으니 참고하면 될 거 같다. #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; // 문자열 입력 cin >> str; stack s; // 연산자 저장공간 queue q; // 피연산자 및 후위계산식이 완성될 공간 for(..
-
1222.계산기1알고리즘/SW Expert Academy 2020. 3. 23. 21:59
이번문제는 후위계산식으로 만들어서 계산하는 문제이다. 그렇게 어려운 난이도는 아니였다. 후위계산법을 제대로 이해하고 문제를 풀면된다. 연산자가 '+' 만 주어졌기 때문에 예외처리할게 많지 않았다. 아마 문제에 숫자가 붙은걸로봐서 앞으로 연산자들이 추가될 것 같은 예감이 든다ㅋㅋㅋ 허접한 코드로 일단 푸는 것에 의의를 두었다. #include #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; cin >> str; stack s1; queues2; char v; for(int i=0; i
-
11403.경로찾기알고리즘/백준 BAEK JOON 2020. 3. 16. 23:19
이번에 풀어볼 문제는 백준의 11403 경로찾기이다. 문제를 이해하는게 어려웠던거 같다. 크흠... 이해력을 기르자!! 해당 문제는 정점이 갈 수 있는 경로를 물어보는 문제였다. 정점과 연결된 간선에는 방향이 존재했다는 것이 바로 이 문제의 포인트다! #include #include #include #define MAX 101 // 주의 -> 나는 배열을 0이 아닌 1부터 적용했다. 그러므로 101 using namespace std; int n; // 정점의 수 int arr[MAX][MAX]; // Map bool check[MAX]; // 방문확인 void dfs(int a){ stack s; s.push(a); // n번째 줄 내용 int v = s.top(); // 해당 스..
-
2178. 미로탐색알고리즘/백준 BAEK JOON 2020. 3. 15. 01:06
이번에 풀어볼 문제는 백준의 2178 미로탐색이다. 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net DFS를 이용하여 문제를 풀었다. #include #include using namespace std; #define MAX 100 int dx[4]={-1,1,0,0};// X 좌표 이동범위 int dy[4]={0,0,-1,1};// Y 좌표 이동범위 // -> 상하좌우 int arr[MAX][MAX]; // 미로 int n, m; void bfs(int v, int w){ queueq; q.push(make_pair(..
-
1260. DFS와 BFS ( Stack & Queue 사용 )알고리즘/백준 BAEK JOON 2020. 3. 10. 01:25
이번에 풀어볼 문제는 백준 1260번 이며 완전탐색 알고리즘의 대표 DFS와 BFS이다. # 많은 블로그에서 해당 알고리즘에 대한 자세한 설명이 되어있으니 참고!! 나의 경우는 DFS의 경우 재귀함수를 사용해서 풀어도 되지만 굳이 Stack을 너무나 사용해서 풀고 싶었다. 알고리즘을 다시 시작한지 얼마안되서 꽤 오랜시간이 걸렸지만 그래도 해내서 다행이다:) Stack과 Queue에 대한 개념과 DFS와 BFS의 탐색 과정을 생각하며 구현하면된다! -> 구현을 외우는 것이 아니라 이해하는 것이 중요하고 예외처리를 잘 하는것이 가장 중요한 Point다! #include #include #include #define MAX 1001 using namespace std; int n, m, ..
-
1218. 괄호 짝짓기 풀이알고리즘/SW Expert Academy 2020. 3. 4. 19:34
이번에 풀어볼 문제는 괄호 짝짓기이다. 알고리즘 문제는 간단하게 풀이만 적도록 하려고 한다. 대충 이러한 문제이다. * 이번 문제를 풀면서 중요하게 기억해야할 내용 * 1. stack 사용법과 다음 테스트 케이스를 위해 stack을 비워줘야함 2. 어떤식으로 탐색을 진행할 것인지 파악 -> 한쪽 형태의 모양을 스택에 우선 넣고나서 비교 3. 가장 중요한건 문제를 제대로 파악하는 것 -> 단순히 짝만 맞추는 것이 아니다. 문제에는 상세히 설명하지 않아서 안나왔지만 가장 처음과 마지막은 괄호는 항상 '(' ')' 이런식으로 닫는 형태여야하며 ')' '(' 이렇게 는 자릴 바꾸면 한쌍이겠지만 문제에서는 한쌍으로 인정하지 않는다... #include #include using namespace std; int ..
-
Computer BusNetwork/Network 2020. 2. 3. 23:59
CPU나 통신을 공부하다보면 가끔 BUS라는 용어를 마주하게 된다.그래서 이번시간에는 BUS에 대해서 포스팅 해보려고 한다. 초창기 컴퓨터는 단일 구조의 버스였으나 CPU, Memory, 하드디스크 등의기기 간의 속도 차이가 점점 커지게 되면서 병목현상이 심해졌고이를 해결하기 위해 컴퓨터 버스가 세분화 되었다.때문에 현재는 여러 종류이 버스가 존재한다. Computer Bus ?컴포넌트간에 데이터를 주고 받아 CPU가 처리한 데이터를 모니터에 출력하거나메모리에 저장할 수 있도록 해주는 통신 Subsystem을 의미한다.한마디로 데이터를 통신할 수 있게 해주는 시스템을 말한다.* 컴포넌트 : 독립적(다른 것에 크게 영향받지 않음) 단위의 소프트웨어 모듈을 의미 * 위에서 말했듯 Bus에는 여러 종류가 존재..
-
CAN 통신 ( Controller Area Network )Network/Network 2020. 2. 3. 23:20
CAN(Controller Area Network)은 호스트 컴퓨터 없이 마이크로 컨트롤러나장치들이 서로 통신하기위해 설계된 표준 통신 규격을 의미하며일반적으로 자동차에 존재하는 ECU(Electronic Control Unit)라는모듈끼리 통신하는 기술이다. ( But, 최근엔 다양한 산업에서 사용됨)dominant와 recessive 비트를 이용해서 통신한다. 쉽게말해 0과 1이다.* 정확한 내용은 여기를 참조하자 ** ECU : 자동차에 사용되는 전자 제어 장치를 의미 * 이러한 CAN통신은 초창기에는 비동기 직렬통신UART(Universal Asynchronous Receiver/Transmitter)를이용해서 통신을 하였다. 하지만 UART 통신의 경우 각각의모듈이 1:1로 통신을 한다는 단점이..