728x90
1. 문제
https://www.acmicpc.net/problem/17413
태그는 그대로 출력한다.
공백도 그대로 출력한다.
숫자 등 단어는 모두 반대로 출력한다.
2. 풀이
- 일반 문자들은 모두 stack에 집어넣는다.
- ' '를 만나면 문자열을 모두 pop시켜서 StringBuilder에 더한다.
- '<'를 만나면 문자열을 모두 pop시켜서 StringBuilder에 더한다. 그리고 '>'를 만날때까지 그대로 문자열을 더한다.
- 반복이 모두 끝나면 stack에 남아있는 문자들을 모두 pop시켜서 더한다.
import java.io.*;
import java.util.*;
public class BOJ_17413_단어뒤집기2 {
public static void main(String[] args) throws IOException {
String S = new BufferedReader(new InputStreamReader(System.in)).readLine();
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < S.length(); i++) {
if (S.charAt(i) == '<') {
while (!stack.isEmpty()) sb.append(stack.pop());
while (S.charAt(i) != '>') sb.append(S.charAt(i++));
sb.append('>');
} else if (S.charAt(i) == ' ') {
while (!stack.isEmpty()) sb.append(stack.pop());
sb.append(' ');
} else {
stack.push(S.charAt(i));
}
}
while (!stack.isEmpty()) sb.append(stack.pop());
System.out.println(sb);
}
}
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 1753 최단경로 - JAVA (0) | 2022.02.25 |
---|---|
[BOJ] 17144 미세먼지 안녕! - JAVA (0) | 2022.02.25 |
[BOJ] 1697 숨바꼭질 - JAVA (0) | 2022.02.25 |
[BOJ] 7569 토마토 - JAVA (0) | 2022.02.24 |
[BOJ] 7576 토마토 - JAVA (0) | 2022.02.24 |
댓글