[백준] 문제 12605번 : 단어 순서 뒤집기 - JAVA
2024. 11. 28. 13:03 - DoosanBaek
[링크] : https://www.acmicpc.net/problem/12605
💎 문제 분석 & 제약 조건
문제 분석 :
각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.
후입선출의 스택의 개념을 사용 , stack.pop()으로 스택의 맨 위 요소를 제거하고 반환 후 , append로 붙여준다.
제약 조건 :
첫 행은 N이며, 전체 케이스의 개수이다.
N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다.
스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.
N = 5
1 ≤ L ≤ 25
🚀 의사 결정
1. 성능과 효율적인 메모리 사용을 위해 BufferedReader 와 InputStreamReader를 함께 사용 , 문자을 읽어 오고
2. StringTokenizer 로 공백 기준 단어를 읽어온다.
3. while 조건문으로 StringTokenizer에서 가져온 토큰을 스택에 푸시한다.
4. append로 Case #x : 모양으로 출력되도록 붙여준다.
5. 스택이 비어있는지 isEmpty() 확인하고 , 비어있지 않다면
6. stack.pop() 으로 스택의 맨 위 요소를 제거하고 반환 후 append로 붙여준다.
7. Case # 별로 한줄에 하나 Case 노출되도록 하고 출력한다.
8. StringBuilder로 모았다가 한번에 출력한다.
📜 소스코드(Java)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// 성능과 효율적인 메모리 사용을 위해 BufferedReader 와 InputStreamReaser를 함께 사용.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 효육적인 메모리 사용을 위해, StringBuilder 로 값을 한번에 모았다가 출력.
StringBuilder sb = new StringBuilder();
// 공백 기준 단어를 읽어 오기 위해 StringTokenizer 사용.
StringTokenizer st;
// 스택 사용
Stack<String> stack = new Stack<>();
// 케이스의 개수 N
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
// StringTokenizer 로 공백 기준 단어를 읽어온다.
st = new StringTokenizer(br.readLine(), " ");
// while 조건문으로 StringTokenizer에서 가져온 토큰을 스택에 푸시한다.
while(st.hasMoreTokens()) {
stack.push(st.nextToken());
}
// "Case #i: " 모양으로 추가
sb.append("Case #").append(i + 1).append(": ");
// 스택이 비어있는지 isEmpty() 확인하고 , 비어있지 않다면
while( !stack.isEmpty()) {
// stack.pop() 으로 스택의 맨 위 요소를 제거하고 반환 후 , append로 붙여준다.
sb.append(stack.pop() + " ");
}
// Case # 별로 한줄에 하나 Case 노출되도록
sb.append("\n");
}
// 출력
System.out.print(sb);
}
}
'알고리즘' 카테고리의 다른 글
[백준] 문제 9933번 : 민균이의 비밀번호 - JAVA (0) | 2024.11.29 |
---|---|
[백준] 문제 1406번 : 에디터 - JAVA (0) | 2024.11.28 |
[백준] 문제 10828번 : 스택 - JAVA (1) | 2024.11.28 |
[백준] 문제 10845번 - 큐 - JAVA (0) | 2024.11.28 |
[백준] 문제 17608번 : 막대기 - JAVA (0) | 2024.11.28 |
[백준] 문제 22252번 : 정보 상인 호석 - JAVA (0) | 2024.11.28 |
[백준] 문제 2504번 : 괄호의 값 - JAVA (0) | 2024.11.27 |
[백준] 문제 4949번 : 균형잡힌 세상 - JAVA (0) | 2024.11.27 |