-
백준 9093 단어 뒤집기 문제 풀이 Stack 활용 ( Java )Problem Solving/Java 2019. 9. 4. 23:45반응형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