
728x90
https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
풀이 방법
수정중..
JAVA 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class BOJ_17413_단어뒤집기2 {
static StringBuilder sb=new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
char[] list=str.toCharArray();
boolean flag=false;
Queue<Character> queue=new LinkedList<Character>();
Stack<Character> stack=new Stack<>();
for (int i = 0; i < list.length; i++) {
if(i==list.length-1) {
if(flag) {
while(!queue.isEmpty()) sb.append(queue.poll());
sb.append(list[i]);
}else {
sb.append(list[i]);
while(!stack.isEmpty()) sb.append(stack.pop());
}
break;
}
if(list[i]=='<') {
while(!stack.isEmpty()) sb.append(stack.pop());
flag=true;
}else if(list[i]=='>') {
while(!queue.isEmpty()) sb.append(queue.poll());
sb.append(list[i]);
flag=false;
continue;
}else if(list[i]==' ' && !flag) {
while(!stack.isEmpty()) sb.append(stack.pop());
sb.append(list[i]);
continue;
}
if(flag) queue.add(list[i]);
else stack.add(list[i]);
}
System.out.println(sb);
}
}
728x90
'알고리즘 > 백준 BOJ' 카테고리의 다른 글
[JAVA] 백준 1753 최단경로 (0) | 2021.09.14 |
---|---|
[JAVA] 백준 15681 트리와 쿼리 (0) | 2021.09.07 |
[JAVA] 백준 2567 색종이-2 (0) | 2021.08.30 |
[JAVA] 백준 2477 참외밭 (1) | 2021.08.29 |
[JAVA] 백준 13300 방배정 (0) | 2021.08.28 |