BOJ_S3_17413
๐ [S3_17413] ๋จ์ด ๋ค์ง๊ธฐ 2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
Stack<Character> stack = new Stack<Character>();
// <> ์์ ์๋์ง ์ฒดํฌ, ์์ผ๋ฉด true
boolean check = false;
for(int i=0; i<str.length(); i++){
if(str.charAt(i) == '<'){
// ์์ ์๋ค๊ณ ์ํ ๋ฐ๊ฟ์ฃผ๊ธฐ
check = true;
// ์คํ์ ์ ์ฅ๋์ด ์๋๊ฑฐ ๋ค popํ๋ฉด์ ์ถ๋ ฅ
while(!stack.isEmpty()){
sb.append(stack.pop());
}
// '<' ๋ํ๋ด๊ธฐ
sb.append(str.charAt(i));
}
else if(str.charAt(i) == '>'){
// ๋ฐ์ ์๋ค๊ณ ์ํ ๋ฐ๊ฟ์ฃผ๊ธฐ
check = false;
// '>' ์ถ๋ ฅ
sb.append(str.charAt(i));
}
// ' < > ' ์์ ์๋ ๊ฒ๋ค
else if(check){
sb.append(str.charAt(i));
}
// ๋ฐ์ ์๋ ๊ฒ๋ค
else if(!check){
// ๋ง์ฝ ๊ณต๋ฐฑ์ด๋ผ๋ฉด
if(str.charAt(i) == ' '){
// stack์ ์๋ ๊ฒ๋ค ๋ค ์ถ๋ ฅ
while(!stack.isEmpty()) {
sb.append(stack.pop());
}
// ๊ณต๋ฐฑ ์ถ๋ ฅ
sb.append(" ");
}
// ๊ณต๋ฐฑ์ด ์๋๋ผ๋ฉด ์คํ์ ์
๋ ฅ
else{
stack.add(str.charAt(i));
}
}
}
// ๋๋จธ์ง ๊ฒ๋ค ๋ค ์ถ๋ ฅ
while(!stack.isEmpty()){
sb.append(stack.pop());
}
System.out.println(sb);
}
}
๐ค ๋์ ์๊ฐ
๋ณดํต ๋จ์ด ๋ค์ง๊ธฐ ๋ฌธ์ ๋ ๋ค stack์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฌธ์ ๋ ๊ดํธ๋ฅผ ์ด์ฉํด์ ํ๋ฒ ๋ ๊ผฌ์์ฃผ์๋ค.
๊ทธ๋ฌ๋ ์ฌ์ค ์กฐ๊ฑด๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ ๋ถ๋ถ์ด๋ผ ์กฐ๊ฑด ๋ฐ๋ผ ๊ตฌํ์ ํด์ฃผ๋ฉด ๋๋ค. ๋ผ๊ณ ์ฝ๊ฒ ์๊ฐ ํ ์ ์์ง๋ง ๋ ๋ง์ด ํค๋งธ๋ค.. ใ
ใ
์ฒ์์๋ ํฌ๊ฒ ์กฐ๊ฑด์ ๋๋์ด ํ ์๊ฐ์ ๋ชปํ๊ณ ๋ฌธ์์ด์ ๋๋ด๋ค๊ฐ ํ์๋ ๋ฃ์๊น ์๊ฐ๋ ํ๋ค๊ฐ ใ
ใ
๊ฒฐ๊ตญ ๋์ค์ ์ญ ๊ฐ๋ฉด์ โ<โ, โ>โ, โ โ ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๋ง๋ค ๊ตฌํ์ ํด์ฃผ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ check๋ฅผ ํตํด์ ๊ดํธ์์ ์๋์ง ์๋์ง ํ์
ํด์ฃผ๊ณ ์์ ์์ผ๋ฉด ๊ทธ๋ฅ ์ถ๋ ฅ ๋ฐ์ ์์ผ๋ฉด ์คํ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค.
๋ฌธ์์ด ๋ฌธ์ ๋ ์๊ทผํ ํท๊ฐ๋ ค์ ์ด๋ฒ ๊ธฐํ์ ํ์คํ ์์๊ฐ๋ค !!