[Baekjoon] 14540_Railway Station
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/14540)
< Railway Station >
๋ฌธ์ ํ์ด
Stack 2๊ฐ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
1) A ๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ธฐ์ฐจ
2) ์ญ ๋ด๋ถ
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class _14540_ { // Railway Station
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = 0;
while ((n = Integer.parseInt(bf.readLine())) != 0) {
String str = "";
while (!(str = bf.readLine()).equals("0")) {
st = new StringTokenizer(str);
int[] result = new int[n];
int idx = 0;
for (int i = 0; i < n; i++) {
result[i] = Integer.parseInt(st.nextToken());
}
Stack<Integer> stack = new Stack<>();
Stack<Integer> temp = new Stack<>();
for (int i = n; i > 0; i--) {
stack.add(i);
}
boolean flag = false;
while (idx < n) {
if (!stack.isEmpty() && stack.peek() == result[idx]) {
stack.pop();
idx++;
} else if (!temp.isEmpty() && temp.peek() == result[idx]) {
temp.pop();
idx++;
} else {
if (!stack.isEmpty()) {
temp.add(stack.pop());
} else {
flag = true;
break;
}
}
}
if (flag) {
bw.write("No\n");
} else {
bw.write("Yes\n");
}
}
bw.write("\n");
}
bw.flush();
}
}
๋ณ์)
n : ๊ธฐ์ฐจ ๊ฐ์ฐจ ๊ฐ์
str : ์์์ ์์ด
result : str์ ๋ฐฐ์ด๋ก ์ ์ฅ
idx : result๋ฅผ ๊ฐ๋ฆฌํค๋ index
stack : A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ ์์
temp : ์ญ ๋ด๋ถ์ ์๋ ๊ฐ์ฐจ ์์
flag : ์์ด ๋ง๋ค ์ ์๋์ง ์ฌ๋ถ
๊ธฐ์ฐจ ๊ฐ์ฐจ ๊ฐ์๊ฐ 0์ด ์๋ ๋๊น์ง ์ ๋ ฅ๋ฐ์ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) 0์ด ์๋ ๋๊น์ง ์์์ ์์ด ์ ๋ ฅ๋ฐ์ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1-1) ์ ๋ ฅ๋ฐ์ ์์์ ์์ด์ ๋ฐฐ์ด result์ ์ ์ฅํ๋ค.
1-2) Stack์ A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ ์์๋ฅผ ์ ์ฅํ๋ค.
1-3) A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ๋ฅผ ์ดํด๋ณด๋ฉฐ result [idx]์ ์ผ์นํ๋ฉด pop ํ๋ค.
1-4) A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ์ ์ผ์นํ์ง ์๊ณ ์ญ ๋ด๋ถ์ ์๋ ๊ฐ์ฐจ๋ฅผ ์ดํด๋ณด๋ฉฐ result [idx]์ ์ผ์นํ๋ฉด pop ํ๋ค.
1-5) ๋ ๋ค ์ผ์นํ์ง ์๊ณ A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ๊ฐ ๋จ์์๋ค๋ฉด ๊ทธ ๊ฐ์ฐจ๋ฅผ ์ญ ๋ด๋ถ์ ์ ์ฅํ๋ค.
1-6) ๋ ๋ค ์ผ์นํ์ง ์๊ณ A๋ฐฉํฅ์์ ๋ค์ด์ค๋ ๊ฐ์ฐจ๊ฐ ๋จ์์์ง ์๋ค๋ฉด ์์ด์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์ข ๋ฃํ๋ค.
2) flag ์ฌ๋ถ์ ๋ฐ๋ผ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
