[99클럽 코테 스터디 13일차 TIL] 백준 12605 단어순서 뒤집기

말하는 감자·2024년 11월 9일
0
post-thumbnail

99클럽 코테 스터디 13일차 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 스택

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드

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 Main {

	public static void main(String[] args) throws IOException {
		
		
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    
	    int N = Integer.parseInt(br.readLine());
	    
	    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	    
	    for (int i=1; i<=N; i++) {
	    	String[] words = br.readLine().split(" ");
	    	Stack<String> stack = new Stack<>();
	    	
    		for (String word : words) {
    			stack.push(word);
    		}
    		
    		bw.write("Case #" + i + ": ");

    		for (int j=0; j<words.length; j++) {
    			bw.write(stack.pop());
    			if(j < words.length-1) bw.write(" ");
    		}
    		bw.write("\n");
	    }
	    
	    br.close();

	    bw.flush();
	    bw.close();
		
	}
}

📌 오늘의 회고

Stack의 Stack.push(item)Stack.pop();를 이용한 문제다.

후입선출하는 Stack의 특성을 이용하여 stack에 입력받은 문자열에서 단어의 순서대로 Stack.push(item)을 통해 넣어주고 다시 하나씩 Stack.pop();을 통해 반환해주면 된다.

처음에 반환해주는 for문에 j의 한계값을 stack.size()로 설정했었는데 하나씩 pop()이 되면서 stack.size() 또한 하나씩 작아지므로 남아있는 다른 단어들이 출력안되는 오류가 발생했다.
그래서 stack.size() 대신 words.length를 기준으로 for문을 돌려 모든 단어가 반환될 수 있도록 해줬다.

profile
나는 말하는 감자다

0개의 댓글