티스토리 뷰

PS

백준 13417. 카드 문자열

tose33 2021. 8. 24. 13:37

https://www.acmicpc.net/problem/13417

 

13417번: 카드 문자열

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처

www.acmicpc.net

 

문자를 리스트에 넣으면서 다음 문자가 리스트의 front()의 문자보다 아스키 코드상 작은값이면 push_front()해주고,

큰값이면 push_back() 해주면 된다.

 

#include <iostream>
#include <vector>
#include <list>
using namespace std;

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

    int tc;
    cin >> tc;

    while(tc--)
    {
        int n;
        vector<char> v;
        list<char> l;

        // inputs
        cin >> n;
        v.resize(n);
        for(int i = 0; i < n; i++)
            cin >> v[i];

        l.push_back(v[0]);
        for(int i = 1; i < n; i++)
        {
            // 리스트의 front에 저장된 문자보다 빠른 알파벳이면
            if(v[i] <= l.front())
            {
                l.push_front(v[i]);
            }
            else
            {
                l.push_back(v[i]);
            }
        }

        for(auto x : l)
            cout << x;
        cout << '\n';
    }

}

'PS' 카테고리의 다른 글

백준 1105. 팔  (0) 2021.08.24
백준 1448. 삼각형 만들기  (0) 2021.08.24
백준 14469. 소가 길을 건너간 이유3  (0) 2021.08.23
백준 13413. 오셀로 재배치  (0) 2021.08.23
백준 19939. 박 터뜨리기  (0) 2021.08.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함