반응형
문제
풀이1 - 정답 (배열 사용)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int t = Integer.parseInt(br.readLine()); // 테스트케이스 개수
int cnt; // 토큰 개수
ArrayList<String> arr;
for(int i = 0; i < t; i++) {
st = new StringTokenizer(br.readLine());
arr = new ArrayList<>();
cnt = st.countTokens();
int arrLen;
for(int j = 0; j < cnt; j++) {
arr.add(st.nextToken());
arrLen = arr.get(j).length();
if(arrLen > 1) {
for(int k = arrLen - 1; k >= 0; k--) {
sb.append(arr.get(j).charAt(k));
}
}else {
sb.append(arr.get(j));
}
sb.append(" ");
}
sb.append("\n");
}
System.out.print(sb);
br.close();
}
}
풀이2 - 정답 (Stack 사용)
풀이1에서 배열로 풀이한 문제를 아래와 같이 Stack을 활용해서도 풀이가 가능합니다.
스택의 Last In First Out 을 활용하여, 공백이나 줄바꿈을 만나면 현재 스택의 값들을 pop 명령어로 출력합니다.
Stack 선언
Stack<Element> stack = new Stack<>()
Stack - 값 추가
stack.add(value);
Stack - 값 제거
stack.pop(); // 가장 위쪽에 있는 값 제거(후입선출)
import java.io.*;
import java.util.*;
public class ex9093_stack {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine()); // 테스트케이스 개수
Stack<Character> stack;
String str;
for(int i = 0; i < t; i++) {
stack = new Stack<>();
str = br.readLine() + "\n";
for(char chr : str.toCharArray()) {
if(chr == ' ' || chr == '\n') {
while(stack.size() > 0) {
bw.write(stack.pop()); //LIFO
}
bw.write(chr);
}else {
stack.add(chr);
}
}
}
br.close();
bw.flush();
bw.close();
}
}
팁
Stack
2021.10.14 - [알고리즘/자료구조] - 자료구조 - 스택(Stack)의 정의와 예제
출처
반응형
'알고리즘 > Java' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 - 12973 (Java) (0) | 2024.11.26 |
---|---|
[프로그래머스] 실패율 - 42889 (Java) (0) | 2024.10.29 |
[백준] 1158. 요세푸스 문제(Java8) (0) | 2023.01.09 |
[백준] 10845. 큐(Java8) (0) | 2023.01.04 |
[백준] 10828. 스택(Java8) (0) | 2022.12.28 |