목록덱 (3)
궤도
문제 풀이 문제 자체도 시간초과 때문에 아주 만만한 문제는 아닌데 입력이 아주 재미나게 들어와서 난이도를 더하는 문제다. 문제의 제목은 입력을 처리하다 나오는 말을 쓴 것 아닐까? 아무튼 시간초과를 보고 싶지 않다면, 이걸 생각하면 된다. R이 나왔을 때 꼭 배열을 뒤집을 필요는 없다. 한 수열에 대해 뒤에서부터 출력하면 reverse한 수열을 앞에서부터 출력하는 거랑 다를게 없다. 소스코드 #include #include #include using namespace std; int main() { cin.tie(NULL); ios_base::sync_with_stdio(false); string p, arr; int T, n; cin >> T; for (int i = 0; i < T; i++) { ci..
문제 풀이 입력을 어떻게 처리할지만 구상하면 이 문제는 끝난거나 다름 없다. 이 문제에서 가장 신경써야 하는 것은 각각 다른 위치에 있는 숫자들을 정해진 순서로 뽑아야 하는 것이다. 그니까 입력에서 주어진 수들 말고는 신경 쓸 필요 없고, 입력값들도 그걸 그대로 저장하는 것이 아니라 입력된 위치에 순서 정보로 넣어주면 된다. 예제 입력 2에 대해 입력을 처리하면 0 1 0 0 3 0 0 0 2 0 이렇게 된다. 1, 2, 3의 순서로 숫자가 뽑히도록 할 것이니 2번, 9번, 5번에 위치한 수들이 순서대로 뽑힐 것이다. 소스코드 #include #include using namespace std; int left_move(deque dq, int index) { int cnt = 0; deque tmp =..
문제 풀이 덱(deque)을 풀어쓰면 double ended queue이다. 그니까 앞뒤로 접근 가능한 큐라는 건데 빨대라고 생각하면 되겠다. www.cplusplus.com/reference/deque/deque/?kw=deque deque - C++ Reference difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t www.cplusplus.com 풀이 #include #include #include using namespace std; int main() { cin.tie(NULL); ios_base::sync_with_stdio(false)..