스택
-
주식가격프로그래머스(Programmers) 2021. 12. 3. 01:17
#include #include #include using namespace std; vector solution(vector prices) { int size=prices.size(); stack can; //stack에는 해당prices의 값이 들어가는 시간이 쌓인다. vector arr(size); //몇초 지났는지 넣을 vector for(int i=0; i prices[i]) // stack이 비어있지 않고 && 스택 맨위의 인덱스에 해당하는 prices의 가격 이 곧 들어올 prices보다 큰 경우 = 가격이 하락한 경우 { arr[can.top()] = i-can.top(); can.pop(); } can.push(i);// 하락한 경우가 아닐 경우, stack에 prices의 INDEX값 ..
-
프로그래머스 - 탑 C++프로그래머스(Programmers) 2020. 7. 11. 14:21
문제 설명 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑에서 발사한 신호는 높이가 7인 네 번째 탑이 수신하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신합니다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신할 수 없습니다. 맨 왼쪽..
-
프로그래머스 - 다리를 지나는 트럭 C++프로그래머스(Programmers) 2020. 7. 11. 11:34
문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6] kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트..
-
백준 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를 세는 배열 => 다른 사람들의 풀이를 보면 훨씬 간단하게..
-
백준 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)..