728x90
728x90
https://www.acmicpc.net/problem/17413
난이도: solved.ac 실버 3
복잡해 보이지만 꽤 간단했던 문제다
문자열 S를 통째로 받아서
' ', '<', '>'를 제외한 나머지 문자들이 나오면
stack에 모두 담았다가
' '가 나오거나 '<'가 나오면 stack에 담겨있는 문자열을
top에서부터 거꾸로 꺼내 answer에 저장했다
그리고 '<'가 나올 때는 '>'가 나올 때까지 문자열을 그대로 출력해주었다
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char S[100001];
char stack[100001];
char answer[100001];
int main() {
int i, top = -1;
scanf("%[^\n]", &S);
int len = strlen(S);
for (i = 0; i < len; i++) {
if (S[i] == '<') {
while (top != -1) {
answer[i - top - 1] = stack[top];
top--;
}
while (S[i] != '>') {
answer[i] = S[i];
i++;
}
answer[i] = S[i];
}
else if (S[i] == ' ') {
while (top != -1) {
answer[i - top - 1] = stack[top];
top--;
}
answer[i] = S[i];
}
else {
top++;
stack[top] = S[i];
}
}
while (top != -1) {
answer[i - top - 1] = stack[top];
top--;
}
printf("%s", answer);
return 0;
}
반응형