알고리즘
-
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 ..
-
[백준] 퇴사 14501알고리즘/백준 BAEK JOON 2019. 4. 18. 03:53
이번 문제는 퇴사이다.https://www.acmicpc.net/problem/14501 생각보다 어려웠는데 그 이유는 아직 재귀함수를 잘 못다루는 것 같다ㅎㅎ 이런 문제는 문제를 풀기전에 어떻게 설계하느냐에 따라 달라지는 것 같다.(사실 모든 문제가 그렇다 ㅎㅎ..) 재귀함수에 대한 문제를 조금 더 풀어봐야겠다. 우선 day와 pay를 나란히 입력받는다.그 뒤 함수를 호출할 것인데 이 때 들어가는 인자는 sum과 idx이다. idx가 입력받은 n과 같아지면 정상종료되야한다고 판단하며문제에서 최대이익을 원했으니 sum과 ans중 최대값을 비교하여 ans에 저장한다. n보다 idx보다 커질 경우 상담을 할 수 없는 것이기 때문에이 경우에도 종료시키는 것이 맞다. idx==n이 되지 않았다면 방금 상담한 날..
-
[백준] 연구소 14502알고리즘/백준 BAEK JOON 2019. 4. 15. 15:33
한동안 알고리즘을 하느라 블로그 글을 쓰지 못했다ㅠ오늘부터는 알고리즘 풀이에 대한 글도 써보려고 한다ㅎㅎ 그 첫 번째 문제는 연구소이다. 백준 홈페에지( https://www.acmicpc.net/ )에 가면 누구나 풀어볼 수 있다.연구소 14502 https://www.acmicpc.net/problem/14502알고리즘을 시작한지 얼마안되서 역시나 풀이가 어색할 수도 있다ㅎㅎ포너블과는 다른 매력이 있는 것 같다. (개인적으로는 포너블이 더 즐거움) 문제는 다음과 같다.N x M으로 이루어진 지도가 있고 그 곳에는 바이러스와 벽, 그리고 공간이 있다.바이러스는 벽이아닌 공간으로 점차적으로 퍼져나가는데 우리는 3개의 벽을 세울 수 있다.이 때 세우는 3개의 벽 3개는 꼭 세워야 한다. 여기까지 문제를 읽..