문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
이 문제를 푸는 방법은 다양하다.
배열에 넣어서 반복문을 통해 거꾸로 출력해도 되고, StringBuffer나 StringBuilder의 reverse메소드를 사용해도 되고,
스택을 통해 풀어도 된다.
나는 백준 알고리즘 사이트 강의를 듣다가 stack을 공부하다가 접한 문제였기 때문에 stack을 이용해서 풀었다.
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testCase = sc.nextInt();
sc.nextLine();
for (int i = 0; i < testCase; i++) {
Stack stack = new Stack<>();
String s = sc.nextLine();
for (int j = 0; j < s.length(); j++) {
if (s.charAt(j) == ' ') {
while (!stack.empty()) {
System.out.print(stack.pop());
}
System.out.print(" ");
} else {
stack.add(s.charAt(j));
}
}
while(!stack.empty()) {
System.out.print(stack.pop());
}
System.out.println();
}
}
}
'Algorithm by java' 카테고리의 다른 글
백준 1406번 에디터 java (1) | 2019.09.04 |
---|---|
백준 1874번 스택수열 java (0) | 2019.09.04 |
백준 1057번 토너먼트 java (0) | 2019.09.02 |
백준 2869번 java 달팽이 (0) | 2019.09.01 |
백준 1094번 막대기 java (0) | 2019.09.01 |