Compy's Blog
297 words
1 minutes
[BOJ] HTML
2024-10-06

HTML

TimeLimitMemoryLimitConditionTAG
1s128MBEOF 처리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;
}

[BOJ] HTML
https://compy07.github.io/Blog/posts/boj/6581/
Author
뒹굴뒹굴 이정훈 공부방
Published at
2024-10-06