https://www.acmicpc.net/problem/17413
📝문제
📝풀이
태그 안에 있는 문자열들을 제외한 나머지들을 뒤집어 출력하는 문제이다.
기본적으로 단어들을 모아서 출력하기 때문에
1. 태그 시작점 "<" 또는 공백 " " 일 경우 => 모아논 문자열을 뒤집어서 Builder에 넣는다.
1.1 "<" 일 경우 태그 문자열을 정방향 출력이기 때문에 그대로 출력 하라는 flag 설정
1.2 " " 일 경우 뒤집은 문자열을 삽입
2. 태그가 끝날경우 => flag 초기화
3. flag = true 인 경우 => 태그 안 문자열이므로 Builder에 삽입
4. 일반 문자열일 경우 => 문자하나씩 모아서 문자열에 이어붙임
1~4 번이 다 끝나면 Builder에 남아 있는 문자열이 있을 수 있기 때문에 1.2 과정을 한번 더 진행
import static java.util.Arrays.*;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split("");
boolean stream = false;
StringBuilder sb = new StringBuilder();
StringBuilder reverseStr = new StringBuilder();
for (String s : input) {
if (s.equals("<")) {
sb.append(reverseStr.reverse()); // reverse 한 값을 추가
sb.append(s); //공백은 정방향으로 추가
reverseStr = new StringBuilder(); // revereString 추가
stream = true; // 태그 stream 시작
} else if (s.equals(">")) { // 태그 끝
sb.append(s);
stream = false; // 태그 stream 종료
} else if (stream) { // 태그 안 문자열이면 그대로 추가
sb.append(s);
} else if (s.equals(" ")) { // 공백을 만날 경우 reverseString 추가
sb.append(reverseStr.reverse());
sb.append(s);
reverseStr = new StringBuilder();
} else { // 일반 문자열인 경우
reverseStr.append(s);
}
}
sb.append(reverseStr.reverse()); // reverseString 에 남은 문자열 추가
System.out.println(sb.toString());
}
}
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [3085] 사탕게임 JAVA (0) | 2022.05.06 |
---|---|
[BOJ] 백준 [1935] 후위표기식2 JAVA (0) | 2022.05.05 |
[BOJ] 백준 [12100] 2048(Easy) JAVA (0) | 2022.04.28 |
[BOJ] 백준 [16198] 에너지 모으기JAVA (0) | 2022.04.27 |
[BOJ] 백준 [1406] 에디터 JAVA (0) | 2022.04.26 |