Notice
Recent Posts
Recent Comments
Link
Tech Log 🛠️
백준9093) 단어 뒤집기를 푸는 두가지 방법 본문
1) StringBuilder 를 이용
입력받은 문자열을 공백을 기준으로 split 해준 뒤 , 문장 배열에 넣어준다.
이 문장 배열에 있는 문자열들을 차례대로 뒤집어 주고 다시 StringBuilder를 이용하여 붙여준다.
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.nextLine();
StringBuilder sb = new StringBuilder();
for(int i=0;i<num;i++){
String str = sc.nextLine();
String[] str_ = str.split(" ");
for(String s : str_){
StringBuilder reverse = new StringBuilder(s);
sb.append(reverse.reverse());
sb.append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
2)
입력받은 문자열의 글자 하나하나를 스택에 넣어준다. 만약 공백이 발견될 경우 스택에 넣지 않고 현재까지 넣었던 문자들을
다시 꺼내준다.
스택은 선입후출 개념이기 때문에 문자열을 반대로 배치할 수 있다.
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.nextLine();
for (int i = 0; i < num; i++) {
StringBuilder sb = new StringBuilder();
Stack s = new Stack();
String str = sc.nextLine();
for (int j = 0; j < str.length(); j++) {
if (str.charAt(j) == ' ') {
while (!s.isEmpty()) {
sb.append(s.pop());
}
sb.append(" ");
} else {
s.push(str.charAt(j));
}
}
while (!s.isEmpty()){
sb.append(s.pop());
}
System.out.println(sb);
}
}
}
'알고리즘' 카테고리의 다른 글
백준 2225번) 합분해 java (0) | 2023.02.22 |
---|---|
백준1463번 시간 초과 난 이유 (0) | 2023.02.18 |
백준 10799번) 쇠막대기 java (0) | 2023.01.21 |
백준 1874번) 스택 수열 java (0) | 2023.01.17 |
백준 9012) 괄호 문제를 푸는 두가지 방법 (0) | 2023.01.15 |