본문 바로가기

개발/ProblemSolving

백준 #6581 HTML

반응형

오로지 <br>, <hr> 태그와 그 외 평문으로만 주어지는 HTML 문서가 있을 때, 그 결과를 보여주는 코드를 작성하시오.

한 줄에는 80자보다 많은 글자가 출력되어서는 안 된다.

 

https://www.acmicpc.net/problem/6581

 


 

50초 전 맞았습니다!!

정답 뜨자마자 정리하는 따끈한 글!

 

 

해당 문제는 입력으로 HTML 코드가 들어오면 파싱해서 결과를 출력해주면 되는 문제이다.

단, 조건이 있는데

 

  • 한 줄에는 80자 이상을 출력할 수 없고 80줄이 넘으면 줄바꿈 후 출력한다.
  • <br> 태그가 주어지면 줄바꿈을 한다.
  • <hr> 태그가 주어지면 줄바꿈 후 라면 - 문자 80개를 출력하고 아니라면 줄바꿈 후 출력한다.

위 조건에 맞게 구현을 해주면 된다.

 

처음 접근 방식은 vector<string>\n (newline) 기호를 넣어주고 출력해보면 되지 않을까 싶었는데 된다.

vector<string>에 단어와 공백 한칸을 (예로 들면 apple ) 넣어주었고 입력받은 길이를 임시로 저장해주었다. 길이가 80줄이 넘어가면 줄바꿈을 해준다.

<br> 태그이면 줄바꿈을 해주고 <hr> 태그일 때 이전 입력이 줄바꿈이면 따로 줄바꿈을 해주지 않고 - 80개를 출력한다. (줄바꿈이 아니였다면 줄바꿈을 해주고 출력한다.)

 

입력을 다 받으면 vector<string>에 저장한 내용을 출력해주면 된다.

 

그대로 구현해보자! (생각없이 해서 코드가 더러워보인다)

 

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    string word;
    vector<string> html;
    int input_len = 0;

    while(cin >> word) {
        if(input_len + word.length() > 80) {
            html.push_back("\n");
            input_len = 0;
        }

        if(word == "<hr>") {
            input_len = 0;
            if(html[html.size() - 1] == "\n") {
                html.push_back("--------------------------------------------------------------------------------");
            } else {
                html.push_back("\n--------------------------------------------------------------------------------");
            }
            html.push_back("\n");

        } else if(word == "<br>") {
            input_len = 0;
            html.push_back("\n");
        } else {
            html.push_back(word);
            html.push_back(" ");

            input_len += (word.length() + 1);
        }
    }

    for(int i = 0; i < html.size(); i++) {
        cout << html[i];
    }

    return 0;
}

 

 

 

 

반응형

'개발 > ProblemSolving' 카테고리의 다른 글

백준 #8979 올림픽  (0) 2020.03.13
백준 #2688 줄어들지 않아  (0) 2020.03.12
최대공약수와 최소공배수  (0) 2019.12.22