반응형
개인적인 풀이일 뿐, 최적의 정답이 아님을 알려드립니다.
문제
난이도: 실버 3
사용언어: JAVA
풀이
이 문제는 '<', '>', 그리고 공백에 대한 예외처리만 잘해주면 쉽게 해결할 수 있습니다. 저는 스택을 이용해 문자열을 뒤집고 출력했습니다.
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
32
33
34
35
36
37
38
39
|
import java.io.*;
import java.util.Stack;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Character> st = new Stack<>();
String s = br.readLine();
int i;
for (i = 0; i < s.length(); i++) {
if (s.charAt(i) == '<') { // '<'인 경우, 앞의 문자열을 뒤집어 출력해주고,
while (st.size() != 0) {
bw.write(st.pop());
}
while (s.charAt(i) != '>') { // '<'이 나올때 까지 그냥 출력
bw.write(s.charAt(i));
i++;
}
bw.write(s.charAt(i));
} else if (s.charAt(i) == ' ') { // ' '인 경우, 앞까지의 문자열을 뒤집어 출력해주고
while (st.size() != 0) {
bw.write(st.pop()); // 모두 출력했으면 공백 출력
}
bw.write(s.charAt(i));
} else {
st.push(s.charAt(i));
}
}
while (st.size() != 0) { // 마지막 문자열 출력
bw.write(st.pop());
}
bw.flush();
}
}
|
cs |
반응형
'백준 온라인 저지 > Silver' 카테고리의 다른 글
[BOJ] 3986 - 좋은 단어 (0) | 2021.02.24 |
---|---|
[BOJ] 11399 - ATM (0) | 2021.02.23 |
[BOJ] 2491 - 수열 (0) | 2021.02.20 |
[BOJ] 15988 - 1, 2, 3 더하기 3 (0) | 2021.02.20 |
[BOJ] 11659 - 구간 합 구하기 4 (0) | 2021.02.18 |