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
복사했습니다!