코딩테스트
-
1228.암호문1알고리즘/SW Expert Academy 2020. 3. 29. 18:07
이번에 풀 문제는 Sw expert의 1228 암호문1이다. 이 문제는 STL list 사용법을 익히는데 도움이 되었던 것 같다. 생각보다 오래걸렸고 그 이유는 입력받는 부분에서 헤맸다..;; 또한 구현 시에 입력하는 방법에 대해서도 생각을 다시해보게 되었다. 입력을 구현하는 것도 굉장히 중요하다는 것을 깨달았다. #include #include using namespace std; int main() { for(int e=1; e> n; // 입력 for(int i=0; i> a; // 하나씩 받아서 ans.push_back(a); // list에 넣어준다 } int m; // 명령어 갯수 cin >> m; // 입력 for(int i=0; i> b; // 입력받아서 다음 걸 받도..
-
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(..
-
1218. 괄호 짝짓기 풀이알고리즘/SW Expert Academy 2020. 3. 4. 19:34
이번에 풀어볼 문제는 괄호 짝짓기이다. 알고리즘 문제는 간단하게 풀이만 적도록 하려고 한다. 대충 이러한 문제이다. * 이번 문제를 풀면서 중요하게 기억해야할 내용 * 1. stack 사용법과 다음 테스트 케이스를 위해 stack을 비워줘야함 2. 어떤식으로 탐색을 진행할 것인지 파악 -> 한쪽 형태의 모양을 스택에 우선 넣고나서 비교 3. 가장 중요한건 문제를 제대로 파악하는 것 -> 단순히 짝만 맞추는 것이 아니다. 문제에는 상세히 설명하지 않아서 안나왔지만 가장 처음과 마지막은 괄호는 항상 '(' ')' 이런식으로 닫는 형태여야하며 ')' '(' 이렇게 는 자릴 바꾸면 한쌍이겠지만 문제에서는 한쌍으로 인정하지 않는다... #include #include using namespace std; int ..