일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 빅데이터
- oracle
- 다이나믹프로그래밍
- dfs
- 알고리즘
- 백트래킹
- 백준
- 그리디
- 프로그래머스
- 아스키코드
- 브루트포스
- 배열
- 문자열
- SQL
- 다리 만들기
- 완전탐색
- 새벽코딩
- BFS
- Queue
- Stack
- DP
- HashMap
- Java
- LIS
- Python
- 탐색
- 스택
- 시뮬레이션
- BufferedReader
- 구현
Archives
- Today
- Total
새벽코딩
[백준] [12605] 단어순서 뒤집기 (stack) (JAVA) 본문
반응형
https://www.acmicpc.net/problem/12605
12605번: 단어순서 뒤집기
스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만
www.acmicpc.net
문제
스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.
입력
첫 행은 N이며, 전체 케이스의 개수이다.
N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.
- N = 5
- 1 ≤ L ≤ 25
출력
각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.
예제 입력 1 복사
3
this is a test
foobar
all your base
예제 출력 1 복사
Case #1: test a is this
Case #2: foobar
Case #3: base your all
※ JAVA 코드 (단어순서 뒤집기)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb;
Stack<String> stack = new Stack<>();
int N = Integer.parseInt(br.readLine());
for(int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
sb = new StringBuilder();
// 입력토큰이 존재할때까지 반복해 스택에 적재
while(st.hasMoreTokens()) {
stack.add(st.nextToken());
}
// 스택에 적재된 반대로 stringBuilder에 합친다
while(!stack.isEmpty()) {
sb.append(stack.pop() + " ");
}
// 마지막 공백 제거
sb.deleteCharAt(sb.length() - 1);
System.out.println("Case #" + i + ": " + sb);
}
}
}
※ 생각정리 (단어순서 뒤집기)
단어순서 뒤집기 문제는 스택을 이용하여 쉽게 풀 수 있는 문제이다.
입력받은 문자열의 각 단어를 토큰별로 끊어서 스택에 담은 다음 스택의 상단 (stack.peek()) 부터 뽑아내어 StringBuilder에 담아 문자열을 단어별로 거꾸로 뒤집어 담았다.
이때 마지막 공백 제거를 위해서 sb.deleteCharAt(sb.length() - 1)를 이용했다.
-새벽코딩-
반응형
'알고리즘' 카테고리의 다른 글
[백준] [2206] 벽 부수고 이동하기 (BFS) (JAVA) (0) | 2023.01.04 |
---|---|
[백준] [7562] 나이트의 이동 (BFS) (JAVA) (0) | 2023.01.04 |
[백준] [17608] 막대기 (구현) (JAVA) (0) | 2023.01.03 |
[백준] [16948] 데스 나이트 (BFS) (JAVA) (0) | 2023.01.03 |
[백준] [3184] 양 (BFS) (JAVA) (0) | 2023.01.01 |
Comments