분류 전체보기
-
1874.스택 수열알고리즘/백준 BAEK JOON 2020. 4. 2. 23:59
이 문제는 그렇게 어려운 문제는 아니였지만 굉장히 헷갈리긴 했다. Stack과 Queue문제를 꽤 풀어본 것이 도움이 되었던 것 같다. 스택과 큐에 대한 다른문제들도 풀었지만 난이도가 너무 쉽다고 느껴 굳이 남기지 않았다. 하지만 처음에 문제를 거꾸로 이해해버렸고 반례를 만나서야 잘못 이해했다는 것을 알아챘다. 아직 반례를 생각해 내는 것이 굉장히 서툰 것 같다.. 어쨌든 결과적으로 다 구현하고 나서 시간초과가 났는데 그러한 이유는 아래와 같다. #include #include #include using namespace std; int main() { queueans; // 부호정답이 저장될 queue queue q; // 입력받을 queue stack t; // 수열이 가능한지 ..
-
1229.암호문2알고리즘/SW Expert Academy 2020. 3. 31. 22:57
이번에 풀어볼 문제는 이전에 풀었던 암호문 1228에 하나의 조건만 추가된 문제이다. 이전에는 삽입만 존재했다면 이번에는 삭제가 생겼다. 생각보다 어렵진 않았고 문제를 풀면서 느낀점은 이러한 STL을 이용할 때 iterator를 잘 다뤄야 한다는 것을 느꼈다. #include #include using namespace std; int main() { for(int k=1; k> n; // 입력 list ans; // 암호문을 입력할 리스트 for(int i=0; i> tmp; ans.push_back(tmp); // 입력받은 값 리스트에 저장 } int m; // 명령어 갯수 cin >> m; // 입력 list ans2; // 명령어 저장 리스트 for(int i=0; i> check; // 입력 i..
-
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; // 입력받아서 다음 걸 받도..
-
1226.미로1 & 1227.미로2알고리즘/SW Expert Academy 2020. 3. 26. 00:16
이번문제는 미로1과 미로2이다. 문제는 간단하다. 주어진 출발지에서 주어진 목적지까지 갈 수 있나 없나를 체크하는 알고리즘을 구현하는 것이고 나는 DFS를 이용하기로 했다. 문제는 queue강의에서 출제되었지만 나는 DFS를 Stack을 이용해서 구현해보았다. 앞서 stack과 queue를 나름 많이 다뤄보아서인지 사용이 자연스러워진거같다. 처음 시작할 때는 분명 헷갈렸던 것 같은데.. ㅎㅎ 미로1과 미로2는 MAX를 16이나 100이냐 말고 코드가 달라진게 없어서 한 번에 포스팅했다. #include #include #include using namespace std; #define MAX 16 // 100 int dx[4]={-1,1,0,0}; // X축 이동 int dy[4]=..
-
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