문제 풀이/백준

[백준] 17413번. 단어 뒤집기 2(JAVA)

27200 2025. 8. 6. 22:27

문제

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


풀이(7분)

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        StringBuilder sb = new StringBuilder();
        StringBuilder word = new StringBuilder();

        boolean insideTag = false;

        for (int i = 0; i < input.length(); i++) {
            char ch = input.charAt(i);

            if (ch == '<') {
                // 태그 시작: 현재까지 word 뒤집고 출력
                sb.append(word.reverse());
                word.setLength(0);
                insideTag = true;
                sb.append(ch);
            } else if (ch == '>') {
                insideTag = false;
                sb.append(ch);
            } else if (insideTag) {
                // 태그 안: 그대로 출력
                sb.append(ch);
            } else {
                if (ch == ' ') {
                    // 공백: 단어 뒤집고 출력 후 공백 출력
                    sb.append(word.reverse());
                    sb.append(' ');
                    word.setLength(0);
                } else {
                    // 일반 문자: word에 추가
                    word.append(ch);
                }
            }
        }

        // 마지막 단어 처리
        sb.append(word.reverse());

        System.out.println(sb.toString());
    }
}

문제 풀이 전략

 

StringBuilder의 reverse 메서드를 이용해서 어렵지 않게 해결할 수 있었다. 

문자열 자체가 길지 않기 때문에 StringBuilder을 이용하지 않고서도 어렵지는 않게 해결할 수 있을 것 같다.

(index를 이용하는 방식? 이 우선 떠오른다.)