algorithm/Stack, Queue, Deque (7) 썸네일형 리스트형 [C++] BOJ 1863 스카이라인 쉬운거 문제 백준 1863번 https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1≤n≤50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1≤x≤1,000,000. 0≤y≤500,000) 첫 번째 지점 www.acmicpc.net 코드 #include #include using namespace std; int n; stack s; int main() { cin >> n; int cnt = 0; s.push(0); for(int i=0; i> a>>b; if (s.top() b) {.. [C++] BOJ 2346 풍선 터뜨리기 문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 첫째 줄에 자연수 N(1≤N≤1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 편의상 0은 적혀있지 않다고 가정하자. www.acmicpc.net 코드 #include #include using namespace std; int main() { int n; cin >> n; deque d; int arr[1005] = { 0 }; for (int i = 2; i arr[i]; cout 0) { cnt--; while (cnt--) { d.push_back(d.front()); d.pop_front(); } cnt = arr[d.front()]; cout [C++] BOJ 1918 후위 표기식 문제 백준 1918번 후위 표기식 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 코드 #include #include #include using namespace std; int main() { stackop;//연산자 string str; cin >> str; for (int i = 0; i < str.size(); i++) { if (str[i] == '(') {//괄호가 시작될 경우 op.push(str[i]); } else i.. [C++] BOJ 1158 요세푸스 문제 문제 백준 1158번 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 코드 #include #include using namespace std; int n, k; int main() { cin >> n >> k; deque d; for (int i = 1; i [C++] BOJ 2161 카드1 문제 백준 2161번 카드1 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 #include #include using namespace std; int n; int main() { cin >> n; deque d; for (int i = n; i > 0; i--) d.push_front(i); while (!d.empty()) { cout [C++] BOJ 10773 Zero That Out 문제 백준 10773 제로 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 코드 #include #include using namespace std; int k, num, sum; int main() { cin >> k; stacks; while (k--) { cin >> num; if (num == 0) { sum -= s.top(); s.pop(); } else { sum += num; s.push(num).. [C++] BOJ 10828 스택 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 #include #include #include using namespace std; int n; int main(){ cin >> n; string str; stack s; while (n--) { cin >> str; if (str == "push") { int num; cin >> num; s.push(num); } else if (str == "pop") { i.. 이전 1 다음