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;
}

