백준 알고리즘 기초 1/자료구조 1

[백준] 9093 : 단어 뒤집기

STUDYING,,, 2021. 10. 1. 00:24

알고리즘 기초 1 / 2

DAY - 1

https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

문제

문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.


한 줄단위로 문장을 받아서 전부 char형 배열에 넣고 처음부터 stack에 push ' '(공백)이 들어오면 stack에 들어있던거를 전부다 pop하는 방식으로 해결을 해 보았다

마지막 문장은 공백으로 안 끝나기 때문에 반복문 종료후 스택비워주기를 한 번더 실행해 주는 것과 함께 시간을 줄이기 위해서 BufferedWriter도 사용하였고 BufferedWriter를 사용할땐 마지막에 .flush()와 .close() 잊지않기!

package day0930;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class Baekjoon_9093_단어뒤집기 {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int TC = Integer.parseInt(br.readLine());

		for (int tc = 1; tc <= TC; tc++) {

			String str = br.readLine();
			char[] arr = str.toCharArray();

			Stack<Character> stack = new Stack<>();

			for (int i = 0; i < arr.length; i++) {
				if (arr[i] == ' ') {
					StringBuffer sb = new StringBuffer();
					while (!stack.isEmpty()) {
						sb.append(stack.pop());
					}
					bw.write(sb + " ");
					continue;
				}
				stack.push(arr[i]);
			}
			while (!stack.isEmpty()) {
				bw.write(stack.pop());
			}
			bw.write("\n");
		}
		br.close();
		bw.flush();
		bw.close();
	}
}

'백준 알고리즘 기초 1 > 자료구조 1' 카테고리의 다른 글

[백준] 10845 : 큐  (0) 2021.10.02
[백준] 1406 : 에디터  (0) 2021.10.01
[백준] 1874 : 스택 수열  (0) 2021.10.01
[백준] 9012 : 괄호  (0) 2021.10.01
[백준] 10828 : 스택  (0) 2021.09.30