-
Java 17413 단어 뒤집기2PS 2023. 5. 4. 00:15
풀이 :
조건문을 사용해 <> 태그를 나타내는지 아닌지를 체크하여 태그 문자열이 아닌 경우에는 스택에 푸쉬하고 공백 또는 '<'를 만나게 된다면 스택에 있는 문자를 전부 pop을 하여 StringBuilder에 추가해주었습니다.
조건식을 설정하는 단계에서 조금 헤맸기에 다음부터는 좀 더 시간을 단축할 수 있게 노력해야겠다고 생각했습니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { Stack<Character> stack = new Stack<>(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringBuilder sb = new StringBuilder(); boolean inTag = false; // 태그 안에 있는지 나타내는 플래그입니다. for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (ch == '<') { inTag = true; while (!stack.empty()) { sb.append(stack.pop()); } sb.append(ch); } else if (ch == '>') { inTag = false; sb.append(ch); } else if (ch == ' ') { while (!stack.empty()) { sb.append(stack.pop()); } sb.append(ch); } else { if (inTag) { // 태그 안에 있는 문자열은 그대로 sb에 추가합니다. sb.append(ch); } else { stack.push(ch); } } } while (!stack.empty()) { sb.append(stack.pop()); } System.out.println(sb.toString()); } }
'PS' 카테고리의 다른 글
Java 10799 쇠막대기 (0) 2023.05.04 Java 10870 피보나치 수 5 (0) 2023.05.04 Java 10866 덱 (0) 2023.05.04 Java 9095 1, 2, 3 더하기 (0) 2023.05.04 Java 10773 제로 (0) 2023.05.02