-
백준 9093 단어 뒤집기 문제 풀이 Stack 활용 ( Java )Problem Solving/Java 2019. 9. 4. 23:45반응형
9093번: 단어 뒤집기
문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어
www.acmicpc.net
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import java.io.*;import java.util.Stack;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// reader 생성BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));// writer 생성Stack<Character> stack = new Stack<Character>();// Stack 생성String input = "";// String 입력받을 변수 선언String nStr = br.readLine();int n = Integer.parseInt(nStr);// 첫 라인을 읽고// 첫 라인에서 입력받은 라인만큼 반복for (int i = 0; i < n; i++) {input = br.readLine();// 한 줄을 읽고input += "\n";// 마지막을 의미할 개행문자 하나를 추가StringBuilder sb = new StringBuilder("");// char들을 더할 StringBuilder 생성// 문자열 길이만큼 반복하는데for (int j = 0; j < input.length(); j++) {if (input.charAt(j) == ' ' || input.charAt(j) == '\n') {// 띄어쓰기를 만난 경우while (!stack.isEmpty()) {// stack이 빌 때 까지sb.append(stack.peek());// stack의 가장 윗 값을 sb에 더하고stack.pop();// stack을 비운다}// stack이 모두 비고 마지막이 아니면 띄어쓰기도 더한다.// 마지막에 띄어쓰기나 줄바꿈이 안붙게 추가if (input.charAt(j) == ' ') {sb.append(input.charAt(j));}} else {// 문자인 경우스택에 집어넣는다stack.push(input.charAt(j));}}bw.write(sb.toString() + "\n");// 그렇게 모인 sb를 출력하고}br.close();bw.flush();bw.close();// reader와 writer를 닫는다}}반복문을 많이 쓰는 방식으로 풀었다가
Stack을 최대한 활용하는 코드로 변경해봤다.
반응형'Problem Solving > Java' 카테고리의 다른 글
백준 17413 단어 뒤집기2 문제 풀이 Stack 활용 ( Java ) (0) 2019.10.19 백준 1158번 조세퍼스 문제 큐 활용 풀이 ( Java ) (0) 2019.09.05 백준 1406번 에디터 문제 Stack 활용 풀이 ( Java ) (0) 2019.09.05 백준 1874번 스택 수열 문제 풀이 Stack 활용 ( Java ) (0) 2019.09.05 백준 9012번 괄호 문제 풀이 Stack 활용 ( Java ) (0) 2019.09.05