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