728x90
728x90
https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net




난이도: 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; }
반응형