https://www.acmicpc.net/problem/17413
제출 코드
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void coutWord(vector<char> &word)
{
for (int i = word.size() - 1; i > -1; i--)
{
cout << word[i];
word.pop_back();
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string str;
vector<char> word;
bool inTag = false;
char pastWord = 0;
getline(cin, str);
for (int i = 0; i < str.length(); i++)
{
if (str[i] == '<')
{
if (pastWord == 'w') cout << ' ';
coutWord(word);
inTag = true;
}
if (inTag)
{
cout << str[i];
if (str[i] == '>')
{
inTag = false;
pastWord = 't';
}
continue;
}
if (str[i] == ' ')
{
if (pastWord == 'w') cout << ' ';
coutWord(word);
pastWord = 'w';
continue;
}
else if (i == str.length() - 1)
{
if (pastWord == 'w') cout << ' ';
word.push_back(str[i]);
coutWord(word);
return 0;
}
word.push_back(str[i]);
}
}
공백을 포함하여 입력받기 위해 getline 함수를 사용했다
우선 이번 문자가 <인지 확인하여 태그 속에 있는지 확인하고, 태그 속에 있다면 > 문자가 나올 때까지 들어온 문자를 그대로 출력해 준다
만약 태그 속이 아니라면 문자를 차례대로 vector에 추가하다가, 다음 문자가 ' '(공백)이거나 '<'이거나, 문자열의 끝인 경우 지금까지 추가된 문자들을 역순으로 출력하는 함수를 실행시켜 주었다
coutWord 함수에서는 역순으로 문자들을 출력하며 출력 후 pop 해준다
vector를 사용해서 코드를 작성했는데, stack을 사용하는 게 좀 더 정석적인 것 같다
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void coutWord(stack<char> &word)
{
while (!word.empty())
{
cout << word.top();
word.pop();
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string str;
stack<char> word;
bool inTag = false;
char pastWord = 0;
getline(cin, str);
for (int i = 0; i < str.length(); i++)
{
if (str[i] == '<')
{
if (pastWord == 'w') cout << ' ';
coutWord(word);
inTag = true;
}
if (inTag)
{
cout << str[i];
if (str[i] == '>')
{
inTag = false;
pastWord = 't';
}
continue;
}
if (str[i] == ' ')
{
if (pastWord == 'w') cout << ' ';
coutWord(word);
pastWord = 'w';
continue;
}
else if (i == str.length() - 1)
{
if (pastWord == 'w') cout << ' ';
word.push(str[i]);
coutWord(word);
return 0;
}
word.push(str[i]);
}
}
vector -> stack으로 변경
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 30802] 웰컴 키트 (0) | 2025.01.03 |
---|---|
[C++][백준4153] 직각삼각형 (0) | 2025.01.03 |
[C++][백준 1213] 팰린드롬 만들기 (0) | 2025.01.02 |
[C++][백준 1515] 수 이어쓰기 (0) | 2025.01.01 |
[C++][백준 20920] 영단어 암기는 괴로워 (0) | 2025.01.01 |