[BOJ/백준/C++] 5430번 AC

2024. 1. 28. 23:05·Coding Test/Baekjoon
728x90
반응형
 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net


 

📌 접근 방법

  1. deque를 하나 만든다
  2. 문자열로 입력받은 배열을 숫자로 빼내어 덱에 넣음
  3. reverse의 기본값은 false이고 R이 입력되면 reverse=true로 바꾸어준다.
  4. D가 입력됐을 때 덱이 비어있으면 error출력하고 끝.
  5. reverse=false면 원래대로 앞의 원소를 제거하고 reverse=true면 뒤집힌 상태이기 때문에 뒤의 원소를 제거한다.
  6. 배열형태로 덱의 값을 출력한다

 

✅  Pass Code

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<iterator>
#include<map>
#include<set>
#include<unordered_set>
#include <stack>
#include<queue>
#include<deque>

using namespace std;

int main() {

    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int T;
    cin>>T;
    for(int i=0; i<T; i++){
        deque<int>d;

        string str,arr;
        bool err=false;
        bool reverse=false;
        int x;
        cin>>str;
        cin>>x;
        cin>>arr;

        string tmp="";

        for(int j=1; j<arr.length(); j++){
            if((arr[j]==','||(arr[j]==']')&&tmp!="")){
                d.push_back(stoi(tmp));
                tmp="";
            }
            else if(arr[j]>='0'&&arr[j]<='9'){
                tmp+=arr[j];
            }

        }
        for(int j=0; j<str.length(); j++){
            if(str[j]=='R'){
                if(reverse==true)reverse=false;
                else reverse=true;

            }
            else if(str[j]=='D'){
                if(d.empty()){
                    err=true;
                    break;
                }
                if(reverse==false){
                    d.pop_front();
                }
                else{
                    d.pop_back();
                }
            }
        }


        if(err==true){
            cout<<"error\n";
            continue;
        }
        else{
            if(d.empty()){
                cout<<"[]\n";
                continue;
            }
            cout<<"[";
            if (reverse == false) {
                for (int j = 0;j < d.size() - 1;j++) cout << d[j] << ",";
                cout << d[d.size() - 1] << "]\n";
            }
            else {
                for (int j = d.size()-1;j > 0;j--) cout << d[j] << ",";
                cout << d[0] << "]\n";
            }



        }

    }

    return 0;
}

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > Baekjoon' 카테고리의 다른 글

[BOJ/백준/C++] 4779번 칸토어 집합  (1) 2024.01.28
[BOJ/백준/C++] 24060번 알고리즘 수업 - 병합 정렬 1  (1) 2024.01.28
[BOJ/백준/C++] 1021번 회전하는 큐  (0) 2024.01.28
[BOJ/백준/C++] 1966번 프린터 큐  (0) 2024.01.28
[BOJ/백준/C++] 11866번 요세푸스 문제 0  (2) 2024.01.28
'Coding Test/Baekjoon' 카테고리의 다른 글
  • [BOJ/백준/C++] 4779번 칸토어 집합
  • [BOJ/백준/C++] 24060번 알고리즘 수업 - 병합 정렬 1
  • [BOJ/백준/C++] 1021번 회전하는 큐
  • [BOJ/백준/C++] 1966번 프린터 큐
예롱메롱
예롱메롱
  • 예롱메롱
    예롱이의 개발 블로그
    예롱메롱
  • 전체
    오늘
    어제
    • 전체보기 (274)
      • 프로젝트 (35)
        • Wedle (12)
        • 인스타그램 클론 코딩 (13)
        • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (10)
      • 인프런 Spring 강의 정리 (79)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (7)
        • Spring 핵심 원리 - 기본편 (9)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편 (11)
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리.. (6)
        • 실전! 스프링 부트와 JPA 활용2 - API 개.. (5)
        • 실전! 스프링 데이터 JPA (7)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (11)
        • 실전! Querydsl (8)
      • Cloud (3)
      • Spring (6)
        • spring boot (5)
        • 소셜로그인 (1)
      • Docker (2)
      • DevOps (0)
      • Coding Test (114)
        • Programmers (37)
        • Baekjoon (76)
      • KB It's Your Life 6기 (1)
      • CS (18)
        • 알고리즘 (13)
        • 컴퓨터 구조 (1)
        • Operating System (0)
        • Network (0)
        • Database (4)
      • git (1)
      • Language (15)
        • Java (5)
        • C++ (6)
        • Python (4)
    • GITHUB GITHUB
    • INSTAGRAM INSTAGRAM
  • hELLO· Designed By정상우.v4.10.3
예롱메롱
[BOJ/백준/C++] 5430번 AC
상단으로

티스토리툴바