9093문제 단어 뒤집기 Java
2021. 9. 18. 11:38ㆍ알고리즘/백준 알고리즘기초
반응형
문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
##문제이해##
결국 입력받은 문자열을 뒤집어서 기존자리에 넣어줘야하는데 그걸 어떻게 할것인가가 포인트인것같다.
스택을 몰랐을때는 각 문자열마다 for문을 거꾸로 돌려서 집어넣는 작업을 해야하는데.. 그걸 스택에 넣었다가 빼면 동일한 형태로 작업이된다.
##코드##
import java.util.Scanner;
import java.util.Stack;
public class boj_9093 {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.nextLine(); // \n때문에 추가한부분
//N번 만큼 반복
for(int z=0; z<N; z++) {
//다음줄 받아서 배열로 저장.띄어쓰기로 각 단어 변환시킴.
String str = sc.nextLine();
String[] strArr = str.split(" ");
//1번 변환
for(int i=0; i<strArr.length;i++) {
//한글자가 아니면 스택에 넣어서 글자 거꾸로 변환
if(strArr[i].length()==1) {
continue;
}else {
StringBuffer sb = new StringBuffer();
for(int j=0; j<strArr[i].length();j++) {
stack.push(String.valueOf(strArr[i].charAt(j)));
}
while(!stack.empty()) {
sb.append(stack.pop());
}
strArr[i]=sb.toString();
}
}
//출력
StringBuffer sb = new StringBuffer();
for(String s: strArr) {
sb.append(s+" ");
}
System.out.println(sb);
}
}
}
반응형
'알고리즘 > 백준 알고리즘기초' 카테고리의 다른 글
1476문제 날짜 계산(브루트포스) Java (0) | 2021.09.18 |
---|---|
15651문제 N과M 3번(브루트포스) Java (0) | 2021.09.18 |
15649문제 N과M 1번(브루트포스) Java (0) | 2021.09.18 |
15654문제 N과M 5번(브루트포스) Java (0) | 2021.09.18 |
10828번 스택(구현) Java (0) | 2021.09.17 |