문제
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를 이용하는 방식? 이 우선 떠오른다.)
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 19951번. 태상이의 훈련소 생활(JAVA) (2) | 2025.08.06 |
---|---|
[백준] 1669번. 멍멍이 쓰다듬기(JAVA) (1) | 2025.08.06 |
[백준] 10434번. 행복한 소수(JAVA) (3) | 2025.08.03 |
[백준] 1781번. 컵라면(JAVA) (3) | 2025.08.02 |
[백준] 1822번. 차집합(JAVA) (1) | 2025.08.02 |