BOJ 17413. 단어뒤집기2
BOJ 17413. 단어 뒤집기 2
풀이
단어를 뒤집는 방법은 Stack에 순서대로 push 하고 다시 pop 하여 단어를 뒤집는다.
태그 <
or' '
or'\n'
를 만나면 만나면 이전까지 Stack에 쌓아놓은 단어들을 모두 pop 한다.
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));
String input = br.readLine() + "\n";
Stack<Character> stack = new Stack<>();
boolean isTag = false;
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '<') isTag = true;
if (isTag || c == ' ' || c == '\n') {
while (!stack.isEmpty()) {
bw.write(stack.pop());
}
if (c != '\n') bw.write(c);
} else {
stack.push(c);
}
if (c == '>') isTag = false;
}
bw.flush();
return;
}
}
import java.lang.StringBuilder
import java.util.*
fun main() {
val stack = Stack<Char>()
val sb = StringBuilder()
var isTag = false
"${readLine()!!}\n".forEach { c ->
if (c == '<') isTag = true
if (isTag || c == ' ' || c == '\n') {
while (!stack.isEmpty()) {
sb.append(stack.pop())
}
if (c != '\n') sb.append(c)
} else {
stack.push(c);
}
if (c == '>') isTag = false
}
print(sb)
}
풀이소스
github.com/beomjo/algorithm-study/blob/main/BOJ/java/17413.java github.com/beomjo/algorithm-study/blob/main/BOJ/kotlin/17413.kt