알고리즘/BOJ
[BOJ] 17413. 단어 뒤집기 2
재담
2022. 4. 20. 23:30
문제 원본 : https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
StringBuilder builder = new StringBuilder();
StringBuilder temp = new StringBuilder();
int len = s.length();
boolean isTag = false;
for (int i = 0; i < len; ++i) {
char ch = s.charAt(i);
if (ch == '<') {
if (temp.length() > 0) {
builder.append(temp.reverse());
temp = new StringBuilder();
}
builder.append(ch);
isTag = true;
} else if (ch == '>') {
builder.append(ch);
isTag = false;
} else if (isTag) {
builder.append(ch);
} else {
if (ch == ' ') {
builder.append(temp.reverse()).append(' ');
temp = new StringBuilder();
} else {
temp.append(ch);
}
}
}
if (temp.length() > 0) {
builder.append(temp.reverse());
}
bw.write(builder.toString());
bw.close();
br.close();
}
}
- 문자열 문제
- 한 글자씩 반복문을 돌면서 태그이면 그대로 붙이고 아니라면 공백을 기준으로 뒤집어 붙여주면 해결된다.