
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문을 돌려 모든 단어가 반환될 수 있도록 해줬다.