297 words
1 minutes
[BOJ] HTML
TimeLimit | MemoryLimit | Condition | TAG |
---|---|---|---|
1s | 128MB | EOF 처리 | implementation(구현) |
오로지 <br>, <hr> 태그와 그 외 평문으로만 주어지는 HTML 문서가 있을 때, 그 결과를 보여주는 코드를 작성하시오.
한 줄에는 80자보다 많은 글자가 출력되어서는 안 된다.
진짜 말 그대로 구현 문제인데… 조금 약간 이상하게 구현하면 바로 틀립니다.. 그리고 약간 문제가 제시하는 입력에 부합하지 않아도 들어가는 코드도 존재하구요…
일단 구현으로 풀리는 문제긴 합니다. 즐거운 ps 되십쇼오오
정답 코드
#include <iostream>
#include <string>
using namespace std;
const string HR_LINE(80, '-');
void print(string line) {
if (!line.empty()) cout << line << '\n';
}
void solution(string& line, const string& word, bool& new_line) {
if (word == "<br>") {
print(line);
if (new_line) cout << '\n';
line = "";
new_line = true;
} else if (word == "<hr>") {
print(line); cout << HR_LINE << '\n';
line = "";
new_line = true;
} else {
if (line.length() + (!line.empty() ? 1 : 0) + word.length() > 80) {
print(line);
line = word;
} else {
if (!line.empty()) line += ' ';
line += word;
}
new_line = false;
}
}
int main() {
string word, line;
bool new_line = true;
while (cin >> word) {
solution(line, word, new_line);
}
print(line);
return 0;
}