Java/Algorithm

[Java-Alogrithm] 백준 17413 단어 뒤집기 2 풀이

Jeong Jeon
반응형

문제 : https://www.acmicpc.net/problem/17413

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

 

풀이 :

처음엔 어떻게 해야되지 고민했다.

하나하나 스택과 Queue를 같이 이용해서 날려야되나 했는데 오히려 간단하게 풀릴것같아 스택 하나로만 해결했다.

관건은 "<" 와 ">"이거로 거꾸로 Flag를 잡아주는것..!!!!!

public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);
		String[] S = sc.nextLine().split("");

		Stack<String> stack = new Stack<String>();
		boolean isc = false;
		for (int i = 0; i < S.length; i++) {
			if(S[i].equals("<")) {
				//이거 나오기 전까지 저장해놓은것을 거꾸로 출력
				isc = true;
				print(stack);
				System.out.print(S[i]);
			}else if(S[i].equals(">")) {
				isc = false;
				System.out.print(S[i]);
			}else if(isc) {
				System.out.print(S[i]);
			}else {
				if(S[i].equals(" ")) {
					print(stack);
					System.out.print(S[i]);
				}else {
					stack.push(S[i]);
				}
			}
		}
		print(stack);
	}

	static void print(Stack<String> stack) {
		while(!stack.isEmpty()) {
			System.out.print(stack.peek());
			stack.pop();
		}
	}
반응형