문제접근
•
< 를 만나면 > 를 만날때까지 계속 출력
•
< 를 만나지 못하면 < 혹은 공백 을 만날때까지 단어의 시작부분과 단어의 끝부분의 인덱스 기록
•
단어의 시작과 끝을 찾으면 끝에서부터 시작까지 출력
놓쳤던 부분
•
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++
복사