-
Baekjoon_10866_덱Algorithm/_Baekjoon 2023. 5. 24. 19:00
문제주소: https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
이번에는 deque를 활용하는 문제다.
위의 조건들을 가진 코드는 다음과 같다.
Python
import sys from collections import deque def main(): num_repeat: int = int(sys.stdin.readline()) cmd: str number: int my_deque: deque[int] = deque() for i in range(num_repeat): cmd = sys.stdin.readline().split() if cmd[0] == 'push_front': my_deque.appendleft(cmd[1]) elif cmd[0] == 'push_back': my_deque.append(cmd[1]) elif cmd[0] == 'pop_front': if (len(my_deque) == 0): print("-1") else: print(my_deque.popleft()) elif cmd[0] == 'pop_back': if (len(my_deque) == 0): print("-1") else: print(my_deque.pop()) elif cmd[0] == 'size': print(len(my_deque)) elif cmd[0] == 'empty': if (len(my_deque) == 0): print("1") else: print("0") elif cmd[0] == 'front': if (len(my_deque) == 0): print("-1") else: print(my_deque[0]) elif cmd[0] == 'back': if (len(my_deque) == 0): print("-1") else: print(my_deque[len(my_deque)-1]) if __name__ == "__main__": main()
C++
#include <iostream> #include <deque> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); // 변수지정 deque<int> my_deque; int repeat_num, number; string cmd; cin >> repeat_num; for (int i=0; i<repeat_num; i++) { cin >> cmd; if (cmd == "push_front") { cin >> number; my_deque.push_front(number); } else if (cmd == "push_back") { cin >> number; my_deque.push_back(number); } else if (cmd == "pop_front") { if (!my_deque.empty()) { cout << my_deque.front() << endl; my_deque.pop_front(); } else cout << "-1" << endl; } else if (cmd == "pop_back") { if (!my_deque.empty()) { cout << my_deque.back() << endl; my_deque.pop_back(); } else cout << "-1" << endl; } else if (cmd == "size") { cout << my_deque.size() << endl; } else if (cmd == "empty") { cout << my_deque.empty() << endl; } else if (cmd == "front") { if (!my_deque.empty()) cout << my_deque.front() << endl; else cout << "-1" << endl; } else if (cmd == "back") { if (!my_deque.empty()) cout << my_deque.back() << endl; else cout << "-1" << endl; } } return 0; }
'Algorithm > _Baekjoon' 카테고리의 다른 글
Baekjoon_17413_단어뒤집기2 (0) 2023.06.06 Baekjoon_1158_요세푸스 문제 (0) 2023.05.24 Baekjoon_10845_큐 (0) 2023.05.18 Baekjoon_1406_에디터 (0) 2023.05.17 Baekjoon_1874_스택 수열 (0) 2023.05.15