알고리즘 문제

[C/C++ 백준 13417번] 카드 문자열 (Silver 3)

새파란 공대생 2020. 9. 17. 10:17

www.acmicpc.net/problem/13417

 

13417번: 카드 문자열

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

www.acmicpc.net

매 카드마다 가장 앞에 있는 카드와 비교해 사전순으로 앞이거나 같다면 앞으로 넣어주고, 아니라면 뒤로 넣는것만 해주면 된다. 이 경우 앞에 넣는 것과 뒤로 넣는 두 가지 행동이 가능해야 하므로 deque를 사용해 처리해 준다.

 

#include <cstdio>
#include <deque>
using namespace std;
int main(void){
	int T;
	char card[1001];
	scanf("%d", &T);
	for(int i=0; i<T; i++){
		int N;
		deque <char> q;
		deque <char>::iterator iter;
		scanf("%d", &N);
		for(int j=0; j<N; j++){
			scanf(" %c", &card[j]);
			if(j==0)
				q.push_back(card[0]);
			else if(card[j]<=(q.front()))
				q.push_front(card[j]);
			else
				q.push_back(card[j]);	
		}
		for(iter = q.begin(); iter != q.end(); iter++)
			printf("%c", (*iter));
		printf("\n");	
	}
}