[백준 5397번] 키로거
2017. 7. 23. 21:50ㆍ알고리즘/백준
반응형
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> using namespace std; char left_word[1000001], right_word[1000001]; int left_sp = 0, right_sp = 0; void push_left(char a) { left_word[left_sp++] = a; } void push_right(char a) { right_word[right_sp++] = a; } char pop_left() { return left_word[--left_sp]; } char pop_right() { return right_word[--right_sp]; } int main() { int n; cin >> n; while (n > 0) { n--; char word[1000001]; cin >> word; int idx = 0; left_sp = 0; right_sp = 0; while (word[idx] != NULL) { if (word[idx] == '<') { if (left_sp > 0) { push_right(pop_left()); } } else if (word[idx] == '>') { if (right_sp > 0) { push_left(pop_right()); } } else if (word[idx] == '-') { if (left_sp > 0) { pop_left(); } } else { push_left(word[idx]); } idx++; } for (int i = 0; i < left_sp; i++) { cout << left_word[i]; } for (int i = right_sp-1; i >=0; i--) { cout << right_word[i]; } cout << '\n'; } return 0; } | cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 10819번] 차이를 최대로 (0) | 2017.07.23 |
---|---|
[백준 1107번] 리모컨 (2) | 2017.07.23 |
[백준 2467번] 용액 (0) | 2017.07.23 |
[백준 10971번] 외판원 순회 2 (0) | 2017.07.23 |
[백준 10844번] 쉬운 계단 수 (0) | 2017.07.13 |