
가. 문제 설명
문자열에서 태그를 제외한 단어들을 뒤집는 문제이다.
나. 접근 방법
1. 입력 문자열 끝까지 순회
2. <나오기전까지tmp에 넣고
3. <이 나오면 tmp에 있는 문자열 reverse처리하고 한번에 출력(띄어쓰기 고려)
4. >이 나올때까지 계속 출력하면된다.
다. 사용할 알고리즘 선택
단순 구현
가. samp입력 문자열 끝까지 순회le
String input = sc.nextLine();
String tmp = "";
String[] sample;
boolean IsParApper = false;
for (int i = 0; i < input.length(); i++) {
나. <나오기전까지tmp에 넣고
IsParApperboolean 변수를 사용하여<가 등장하면true로 바꾸게 하였다.
if (!IsParApper) {
tmp += input.charAt(i);
}
다. <이 나오면 tmp에 있는 문자열 reverse처리하고 한번에 출력(띄어쓰기 고려)
if (input.charAt(i) == '<') {
IsParApper = true;
if (!tmp.isEmpty()) {
sample = tmp.split(" ");
for (int j = 0; j < sample.length; j++) {
StringBuffer sb = new StringBuffer(sample[j]);
System.out.print(sb.reverse().toString());
if (j != sample.length - 1) {
System.out.print(" ");
}
}
tmp = "";
}
}
마. 마지막으로, >이 나올때까지 계속 출력하면된다.
} else {
if (input.charAt(i) == '>') {
IsParApper = false;
}
System.out.print(input.charAt(i));
}
import java.util.*;
import java.io.*;
import java.lang.*;
// 태그를 제외한
public class P17413 {
public static void main(String args[]) throws IOException {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String tmp = "";
String[] sample;
boolean IsParApper = false;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == '<') {
IsParApper = true;
if (!tmp.isEmpty()) {
sample = tmp.split(" ");
for (int j = 0; j < sample.length; j++) {
StringBuffer sb = new StringBuffer(sample[j]);
System.out.print(sb.reverse().toString());
if (j != sample.length - 1) {
System.out.print(" ");
}
}
tmp = "";
}
}
if (!IsParApper) {
tmp += input.charAt(i);
} else {
if (input.charAt(i) == '>') {
IsParApper = false;
}
System.out.print(input.charAt(i));
}
}
if (!tmp.isEmpty()) {
sample = tmp.split(" ");
for (int j = 0; j < sample.length; j++) {
StringBuffer sb = new StringBuffer(sample[j]);
System.out.print(sb.reverse().toString());
if (j != sample.length - 1) {
System.out.print(" ");
}
}
}
}
}
가. 문자열 뒤집기
StringBuffer sb = new StringBuffer(문자열);
System.out.print(sb.reverse().toString());
단순구현 문제이고 한번에 성공할 줄 몰랐다. 스택을 사용하려했지만, 굳이 그럴 필요가 없어보였고 처리하고 싶은 문자는 바로 출력하였다.