티스토리 뷰

#include <stdio.h>

int main(void)
{
	int t;
	scanf("%d", &t);
	while(t--) {
		char deq[2000] = {};
		int l=1000, r=1000;
		int n;
		scanf("%d", &n);
		while(n--) {
			char c;
			scanf(" %c", &c);
			if(deq[l] < c) { //가장 왼쪽에 있는 값보다 큰 경우
				deq[r++] = c; //가장 오른쪽에다가 저장
			} else { 
				deq[--l] = c; //가장 왼쪽에다가 저장
			}
		}
		
		for(int i=l; i<r; i++) printf("%c", deq[i]); //가장 왼쪽에서부터 오른쪽 까지 출력
		printf("\n");
	}
}

 

풀이 : 덱

 

각각의 테스트 케이스에 대해서

 

입력받은 순으로 처음값만 넣어 준 다음,
그 다음 값부터, 가장 왼쪽에 있는 값보다 데이터가 크면 가장 오른쪽에 저장하며,

그렇지 않은 경우 가장 왼쪽 바로 앞에 저장합니다.

모든 값을 비교해서 넣은 다음, 왼쪽에 있는 데이터부터 출력하면 됩니다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함