https://www.acmicpc.net/problem/13417
13417번: 카드 문자열
입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처
www.acmicpc.net
풀이 :
- 주어지는 알파벳을 문자열의 제일 앞이나 뒤로 붙일 수 있을 때, 사전순으로 가장 빠른 문자열을 만들어야 한다.
- 문자열의 제일 앞 문자와 비교해서 같거나 작으면 앞에 붙이고, 아니면 뒤에 붙이면 된다.
코드 :
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
cin.tie(NULL);
ios::sync_with_stdio(false);
int t, n;
string ans, temp;
char c;
cin >> t;
while(t--){
cin >> n;
ans = ""; //정답으로 쓸 문자열 초기화
while(n--){
temp = ""; //복사할 때 쓸 문자열 초기화
cin >> c;
if(ans.size() == 0){ //제일 처음 들어오는 문자는 비교없이 들어온 문자를 더해준다
ans += c;
}else{
if(ans[0] < c){ //문자열의 제일 첫 문자와 비교해서 크다면 더해줘서 뒤에 붙여준다
ans += c;
}else{ //작거나 같다면
temp += c; //temp배열에 들어온 문자를 더해서 제일 앞으로 보내주고,
temp += ans; //ans배열에 들어있는 문자를 더한뒤,
ans = temp; //다시 ans배열로 옮겨준다
}
}
}
cout << ans << '\n';
}
}
'PS_Baekjoon' 카테고리의 다른 글
[백준 C++] 1475번 : 방 번호 (1) | 2023.03.22 |
---|---|
[백준 C++] 1431번 : 시리얼 번호 (1) | 2023.03.21 |
[백준 C++] 11441번 : 합 구하기 (1) | 2023.03.19 |
[백준 C++] 1213번 : 펠린드롬 만들기 (0) | 2023.03.18 |
[백준 C++] 1343번 : 폴리오미노 (1) | 2023.03.17 |