fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. int a[100002];
  4. char arr[100002];
  5. void init() { //배열 초기화
  6. for (int i = 0; i < 100002; i++) {
  7. arr[i] = 0;
  8. a[i] = 0;
  9. }
  10. }
  11. int main() {
  12. int t;
  13. scanf("%d", &t);
  14. getchar();
  15. while (t--) {
  16. scanf("%s", arr); getchar();
  17. int arrlength = strlen(arr);
  18. int n = 0;
  19. char temp;
  20. scanf("%d", &n);
  21. getchar();
  22. scanf("%c", &temp);
  23. for (int i = 0; i < n; i++) {
  24. if (i < n - 1) {
  25. scanf("%d", &a[i]);
  26. scanf("%c", &temp);
  27. }
  28. else {
  29. scanf("%d", &a[i]);
  30. scanf("%c", &temp);
  31. getchar();
  32. }
  33. }
  34.  
  35. int Rcount = 0; //R을 카운트하는 변수
  36. int front = 0, rear = n - 1;
  37. int p = 1;
  38. for (int i = 0; i < arrlength; i++) {
  39. if (arr[i] == 'R') {
  40. Rcount++;
  41. }
  42. else {
  43. if (rear == front - 1 || rear < 0) { p = 0; printf("error\n"); break; }
  44. if (Rcount % 2 == 0) { //R이 2의 배수면 앞의 원소 제거
  45. front++;
  46. }
  47. else { //그게 아니면 뒤의 원소 제거
  48. rear--;
  49. }
  50. }
  51. }
  52. if (p != 0) {
  53. if (Rcount % 2 == 0) { //R을 2의배수 만큼 했을 때 정상출력
  54. printf("[");
  55. for (int i = front; i <= rear; i++) {
  56. if (i < rear)printf("%d,", a[i]);
  57. else printf("%d", a[i]);
  58. }
  59. printf("]\n");
  60. }
  61. else { //그게 아니면 반전 출력
  62. printf("[");
  63. for (int i = rear; i >= front; i--) {
  64. if (i > front) printf("%d,", a[i]);
  65. else printf("%d", a[i]);
  66. }
  67. printf("]\n");
  68. }
  69. }
  70. init();
  71. getchar();
  72. }
  73. }
Success #stdin #stdout 0s 4520KB
stdin
2
R
1
[1]
D
1
[1]
stdout
[1]
error