평범한 연구소

[백준] 9093번: 단어 뒤집기 (JAVA) 본문

JAVA/알고리즘 공부

[백준] 9093번: 단어 뒤집기 (JAVA)

soyeonisgood 2022. 11. 7. 19:56

문장의 단어를 뒤집어서 출력하는 프로그램이다. 

스택을 이용하거나, StringBuilder의 reverse()를 이용하는 두 가지 방법이 있다.

 

방법1. StringBuilder - reverse()

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Ex9093_2 {

	public static void main(String[] args) {
		
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			StringBuffer sb = new StringBuffer();
			int cnt = Integer.parseInt(br.readLine());
			
			while(cnt-- > 0) {
				String sentance = br.readLine();
				StringTokenizer token = new StringTokenizer(sentance);
				
				while(token.hasMoreElements()) {
					StringBuffer re = new StringBuffer(token.nextToken());
					sb.append(re.reverse());
					sb.append(" ");
				}
			}
			
			System.out.println(sb);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

}

 

 

방법2. 스택

package stack;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Ex9093_4 {

	public static void main(String[] args) {

		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			StringBuffer sb = new StringBuffer();
			int cnt = Integer.parseInt(br.readLine());
			Stack<Character> s = new Stack<>();

			while (cnt-- > 0) {
				String sentance = br.readLine()+" ";
				for (int i = 0; i < sentance.length(); i++) {
					if (sentance.charAt(i) == ' ') {
						while (!s.empty()) {
							sb.append(s.pop());
						}
						sb.append(" ");
					} else {
						s.push(sentance.charAt(i));
					}

				}

			}

			System.out.println(sb);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}