Stack
-
백준 11005 - 진법 변환 2백준 algorithm 2020. 4. 1. 01:05
=> 간단한 진법 변환 문제이다. => 진법 변환의 알고리즘을 알아야한다. ex) 11 을 3진법으로 나타내고자 한다. 11 / 3 = 3 ... 2(나머지) 3 / 3 = 1 ... 0 1/3 = 0 ... 1 =>의 결과로 102(3) 의 결과를 얻을 수 있다. => 위와 같은 알고리즘을 실행하기 위해서는 stack을 사용하면 손쉽게 해결할 수 있다. => stack 은 두개의 다른 자료형을 넣을 수 없다. => 10이 넘는 숫자는 A .... Z로 표현할 수 있다. => 아스키코드를 이용하여 해당 숫자를 표현하였다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(..
-
백준 17299 - 오등큰수백준 algorithm 2020. 3. 18. 17:49
=> 오큰수와 같은 개념의 문제이다. https://codingham.tistory.com/77 백준 18298 - 오큰수 =>이해하는데 오래 걸린 문제이다. =>stack을 사용하여 푸는 문제이다. =>stack에 들어가는 숫자는 현재 오큰수를 찾지 못한 수의 idnex이다. =>현재 index에 들어있는 값이 stack의 top index에 해당하는 값보다.. codingham.tistory.com 위를 보면 오큰수를 구하는 코드를 알 수 있다. =>이 문제에서 본인은 세개의 배열을 써서 문제를 풀었다. => arr : 실제값을 입력받는 배열 arr2 : 각 숫자가 나온 횟수를 arr의 길이로 다시 만든 배열 cntarr : 각 element를 세는 배열 => 다른 사람들의 풀이를 보면 훨씬 간단하게..
-
백준 1918 - 후위 표기식백준 algorithm 2020. 3. 8. 17:29
후위표기식2 와 달리 계산하는 것이 아닌 중위표기식을 후위표기식으로 바꾸는 방법이다. =>연산자를 stack에 넣는 것으로 한다. => ( 여는 괄호가 나오면 여는 괄호를 무조건 stack에 쌓는다. => ) 닫는 괄호가 나오면 (여는 괄호가 나올 때까지 stack을 pop하며 찾는다. => stack안에 연산자들은 위에 있는 연산자가 아래에 있는 연산자보다 우선순위가 높아야한다. (같아서도 안됨!) => ( 여는 괄호의 경우를 감안하여 코드를 짜야한다. *** 왜 나는 한 문제를 푸는데 기본적으로 한시간이 쓰이는지.... 조금 더 빨리 답을 찾아가는 습관을 들여야겠다. #include #include #include #include #include using namespace std; stack st;..
-
백준 1935 - 후위 표기식2백준 algorithm 2020. 3. 8. 02:02
=> 피연산자들은 stack에 차례로 쌓은 후, 연산자를 만나면 해당 연산 작업을 한 후 다시 스택에 쌓는다. => 여기서 주의해야할 점은 stack top 아래 +-*/(연산자) stack top 순서라는 것을 간과해서는 안된다. =>피연산자들을 stack에 쌓기 위해서는 숫자배열에 접근하여야하는데, 이때 후위연산식에서 A, B , C 등의 아스키코드를 이용하여 인덱스 접근을 할 수 있다. ***본이은 이 부분에서 한시간을 넘게 소비하였다. #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)..
-
백준 1406 - 에디터백준 algorithm 2020. 2. 25. 21:56
stack을 사용하여 풀 수 있는 문제이다. stack 두 개를 사용하여 커서를 표현 할 수 있다. 커서는 언제나 leftStack과 rightStack 사이에 있다. L : leftStack.top을 rightStack으로 옮긴다. D: rightStack.top을 leftStack으로 옮긴다. B: leftStack.top을 삭제한다. P : leftStack에 해당하는 char를 추가한다. Print () : rightStack은 pop하는 순서대로 뽑아도 무방하다. 하지만 leftStack은 pop하는 반대 순서로 print해야 한다. 본인은 vector를 사용하여 간단하게 활용하였다. leftStack을 deque 를 사용하였다면 더 간단히 해결할 수 있을 듯 하다. #include #inclu..