개발/백준

[백준] 13417번. 카드 문자열 (C++)

yun000 2024. 1. 6. 17:40

문제 설명

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

 

13417번: 카드 문자열

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

www.acmicpc.net

해결 방법

문자열을 입력받은 후 아스키코드로 변경하여 vector에 저장한다.

0번째 문자보다 아스키코드가 같거나 작으면 왼쪽에, 크다면 오른쪽에 문자를 추가

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

int main()
{
	int n, t; cin >> t;

	for (int k = 0; k < t; k++)
	{
		// 영어 대문자 아스키코드 65-90

		cin >> n;
		vector<int> card(n);
		char input;

		for (int i = 0; i < n; i++)
		{ cin >> input; card[i] = int(input); }


		string result;
		result += char(card[0]);

		for (int i = 1; i < n; i++)
		{
			if (card[i] <= int(result[0]))
			{ result = char(card[i]) + result; }//왼쪽에 붙이기
			else
			{ result = result + char(card[i]); }//오른쪽에 붙이기
		}

		cout << result << "\n";

	}
}

 

+ 백준 질문 게시판에서 찾은 추가적인 예제

입력
2
4
Z A B Z
7
A S D F G A S

출력
AZBZ
AASDFGS