백준 9093번
import java.util.Scanner;
import java.util.Stack;
public class problem459 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
in.nextLine(); // 개행 제거
while (size-- > 0) {
Stack<Character> stack = new Stack<>();
String input = in.nextLine(); // 문자열 입력
for (char ch : input.toCharArray()) {
// 문자열중 공백을 만날경우
if (ch == ' ') {
// stack이 비어있지 않을때 까지 반복
while (!stack.isEmpty()) {
System.out.print(stack.pop());
}
System.out.print(" ");
} else {
stack.push(ch);
}
}
// 마지막 단어 출력
while (!stack.isEmpty()) {
System.out.print(stack.pop());
}
System.out.println();
}
}
}
- 정답 코드 (StringBuilder 의 reverse() 사용)
import java.util.Scanner;
public class problem459 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
in.nextLine(); // 개행 제거
while (size-- > 0) {
StringBuilder output = new StringBuilder();
String[] input = in.nextLine().split(" "); // 공백기준 split
for (String str : input) {
// 문자열 reverse
StringBuilder reverse = new StringBuilder(str).reverse();
output.append(reverse).append(" ");
}
System.out.print(output.toString());
output.append("\n");
}
}
}
백준 9012번
import java.util.Scanner;
import java.util.Stack;
public class problem460 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
in.nextLine(); // 개행 제거
while (size-- > 0) {
Stack<Character> stack = new Stack<>();
String input = in.nextLine();
boolean flag = true;
for (char ch : input.toCharArray()) {
if (ch == '(') {
stack.push(ch);
}
// ( 괄호가 아니면 나머지는 ')' 임으로 pop
else {
if (stack.isEmpty()) {
flag = false;
break;
}
stack.pop();
}
}
// ( 여는 괄호만 쌓였을 경우
if(!stack.isEmpty()) flag = false;
if (flag) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
}
백준 1158번
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class problem461 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
StringBuilder output = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
output.append("<");
for (int i = 1; i <= n; i++) {
queue.offer(i);
}
while (queue.size() > 1) {
for (int i = 0; i < k - 1; i++) {
// k번째 이전의 숫자를 큐의 뒤로 미룬다.
queue.offer(queue.poll());
}
output.append(queue.poll()).append(", ");
}
output.append(queue.poll()); // 큐에 남은 마지막 숫자
output.append(">");
System.out.println(output.toString());
}
}