백준 9093번
https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
문제설명
테스트 케이스의 개수를 입력받고, 그 만큼 반복하며 문자열을 입력받는다.
그 후, 단어를 기준으로 뒤집어서 출력하는 프로그램을 작성.
접근
1. 단어 기준이므로 공백을 기준으로 데이터를 쪼개야 할 것같다고 생각을함.
2. 공백을 기준으로 하여 단어별로 뒤집어야하니 am이 입력될 시 ma로 후입선출 LIFO가 일어남. -> Stack을 사용하면 될것 같다고 생각함.
코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
for(int i=0;i<n;i++){
Stack<Character> stk = new Stack<>();
String s=bf.readLine();
StringBuilder sb = new StringBuilder();
for(int j=0;j<s.length();j++){
if(s.charAt(j) == ' ') {
while(!stk.empty()) {
sb.append(stk.pop());
}
sb.append(" ");
}else {
stk.push(s.charAt(j));
}
}
while(!stk.empty()) {
sb.append(stk.pop());
}
System.out.println(sb);
}
}
}
풀이
1. Charcter형 Stack을 선언
2. 문자열을 입력받고 문자하나씩 Stack에 저장
3. 문자열 길이만큼 반복문을 돌며 Stack에 값을 하나씩 넣고 공백을 만나면 지금까지 Stack에 저장된 값들을 pop해주며 뒤집어서 StringBuilder에 추가 후에 공백 추가.
4. 마지막단어 뒤에는 공백이 없으므로 for문 이후 한번더 Stack에 저장된 값들을 하나씩 뒤집어서 StringBuilder에 추가
5. 마지막 출력.
'알고리즘 > 백준 Baekjoon' 카테고리의 다른 글
백준 1541번 잃어버린 괄호(JAVA) - 그리디 (0) | 2023.02.15 |
---|---|
백준 2309번 일곱 난쟁이(JAVA) (0) | 2023.01.16 |
백준 9095번 1,2,3 더하기 (C++) (0) | 2021.06.02 |
백준 20365번 블로그2 (C++) (0) | 2021.04.23 |
백준 1744번 - 수 묶기 (C++,priority_queue) (0) | 2021.04.22 |