9093. 단어 뒤집기
https://www.acmicpc.net/problem/9093
📌문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
- 예제1
📝입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
2
I am happy today
We want to win the first prize
💻출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp
📌풀이(단순 뒤집기)
600ms, 71136kb
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
for(int i = 0; i < n; i++){
sb.append(reversString(String.valueOf(br.readLine()))).append("\n");
}
System.out.print(sb);
}
public static String reversString(String str){
String reversStr = "";
String[] arr = str.split(" ");
StringBuffer sb;
for(String s : arr){
sb = new StringBuffer(s);
String revers = sb.reverse().toString();
reversStr += revers + " ";
}
return reversStr;
}
}
- 공백을 기준으로 문자열을 자른뒤 reverse 함수를 사용해 단순 뒤집어줌
- 위 풀이는 예전에 풀이했던 방법임
📌풀이 (스택활용)
640ms, 75120kb
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
while(n --> 0){
Stack stack = new Stack<>();
String str = br.readLine();
for(char c : str.toCharArray()) {
if (c == ' ') {
while (!stack.isEmpty()) sb.append(stack.pop());
sb.append(' ');
} else stack.push(c);
}
while(!stack.isEmpty()) sb.append(stack.pop());
sb.append("\n");
}
System.out.print(sb);
}
}
- 이미 풀었던 문제여서 스터디할 때는 다른 방법으로 접근해봄.
- 스택은 후입선출 구조임. pop할 때 역순으로 나올 수 밖에 없음.
- 문자에 공백이 들어온다면 stack에 있는 문자들을 pop하면서 뒤집어줌
'Algorithm > PTUStudy' 카테고리의 다른 글
6주차. 스택수열 (0) | 2023.02.16 |
---|---|
5주차. 괄호 (0) | 2023.02.06 |
5주차. 스택 (0) | 2023.02.06 |
5주차. 연결 리스트(역순 연결 리스트) (0) | 2023.02.06 |
5주차. 연결 리스트(두 정렬 리스트의 병합) (0) | 2023.02.06 |