본문 바로가기
백준/5001 - 10000

[백준] 1213번 : HTML(JAVA)

by lms0806 2021. 8. 17.
728x90
반응형

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

 

6581번: HTML

원래의 HTML 문서가 입력으로 주어진다. 이 텍스트는 단어와 HTML 태그들로 이루어져 있으며, 태그는 한 개 이상의 공백문자나 탭, 개행 문자 등으로 구분된다. 단어는 연속된 알파벳, 숫자, 또는

www.acmicpc.net

풀이

"<br>"이 들어올 시 개행문자 추가

"<hr>"이 들어올 시 개행문자 추가 + "-" 80번 출력 + 개행문자 추가

나머지는 그냥 출력하되 80문자를 넘어가면 개행문자추가

 

StringBuilder와 String answer을 만들고, answer에 더해주다가

<br>이 들어올 시 answer의 크기가 0이 아니면 StringBuilder에 answer을 추가하고 개행문자추가

<hr>이 들어올 시 answer의 크기가 0이 아니면 StringBuilder에 answer을 추가하고 개행문자 추가 후 "-" 80번 추가 후 개행문자 추가

나머지일 시 answer + 들어온 문자의 길이가 80이 넘으면 StringBuilder에 answer을 추가하고 개행문자 추가 후, answer을 초기화

and answer에 들어온 문자 + " " 공백 추가
※주의 : answer을 StringBuilder에 추가할 경우 뒤에 공백을 제거해야함

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
		
		StringBuilder sb = new StringBuilder();
		String answer = "", str = "";
		while((str = br.readLine()) != null) {
			StringTokenizer st = new StringTokenizer(str);
			while(st.hasMoreTokens()) {
				String s = st.nextToken();
				
				if(s.equals("<br>")) {
					sb.append(answer.trim()).append("\n");
					answer = "";
				}
				else if(s.equals("<hr>")) {
					if(answer.length() != 0) {
						sb.append(answer.trim()).append("\n");
						answer = "";
					}
					sb.append("-".repeat(80)).append("\n");
				}
				else {
					if((answer + s).length() > 80) {
						sb.append(answer.trim()).append("\n");
						answer = "";
					}
					answer += s + " ";
				}
			}
		}
		System.out.print(sb + answer.trim());
	}
}
728x90
반응형

댓글