Search
Duplicate
📗

단어 뒤집기 2

주차
19
문제번호
17413
언어
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

< 를 만나면 > 를 만날때까지 계속 출력
< 를 만나지 못하면 < 혹은 공백 을 만날때까지 단어의 시작부분과 단어의 끝부분의 인덱스 기록
단어의 시작과 끝을 찾으면 끝에서부터 시작까지 출력

놓쳤던 부분

while문의 조건을 잘못 생각하여 &&||로 설정하여 버스 에러 발생..

코드

2116 KB

4 ms

#include <iostream> #include <cstring> char input_str[100001]; void input_setting() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { std::cin.getline(input_str, 100001); } int tag_handler(int i) { while (input_str[i] != '>') std::cout << input_str[i++]; std::cout << input_str[i]; return (i); } int word_handler(int i, int len) { int start, end; start = i; while (input_str[i] != '<' && input_str[i] != ' ' && i < len) ++i; end = i - 1; for (int j = end; j >= start; j--) std::cout << input_str[j]; if (input_str[i] == ' ') std::cout << ' '; else if (input_str[i] == '<') --i; return (i); } void solution() { int len; len = strlen(input_str); for (int i = 0; i < len; i++) { if (input_str[i] == '<') i = tag_handler(i); else i = word_handler(i, len); } } int main(void) { input_setting(); input(); solution(); return (0); }
C++
복사