백준/5001 - 10000
[백준] 1213번 : HTML(JAVA)
lms0806
2021. 8. 17. 12:30
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