1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ ๋ฐฉ์
KEY WORD
: DATA STRUCTURE
(0) ํ์ฌ ์กฐํ ์ค์ธ ์๋ฅผ value
, ์ถ๋ ฅํด์ผ ํ๋ ์๋ฅผ now
๋ผ๊ณ ํด๋ณด์.
(1) value <= now ๊ฐ ์ฑ๋ฆฝํ์ง ์์ ๋๊น์ง value๋ฅผ stack์ ๋ฃ๊ณ , value++ ํ๋ค.
(2) stack์ top๊ณผ now๋ฅผ ๋น๊ตํ๋ค.
(3) top์ด ํฌ๋ฉด ์ด๋ค ๋ฐฉ๋ฒ์ ์จ๋ ์์ด์ ๋ง๋ค ์ ์๋ค. NO
๋ฅผ ์ถ๋ ฅํ์.
(์๋ํ๋ฉด, ์์ด์ ๋ฌด์กฐ๊ฑด stack์์ pop๋๋ ๊ฐ์ผ๋ก ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. stack์๋ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ด ์ ์ฅ๋๊ธฐ์, ํ stack์ top ๊ฐ์ด ํฌ๋ค๊ณ ์๋ก push๋ฅผ ๋ฐ์ผ๋ฉด ๋ ํฐ ๊ฐ๋ฐ์ ๋ค์ด์ค์ง ์๋๋ค. stack์ top์ด now๋ณด๋ค ์์ ๋๋ ๊ฐ์ ๊ฐ์ด ๋ค์ด์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด ๋๋ ๊ฒ๊ณผ ์๋ฐ๋๋ค.)
(4) top == now ์ด๋ฉด stack์์ popํด์ ๊ฐ์ ๋บ๋ค.
Stack์ ์ง์ง stack ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฐ์ง ์๊ณ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ ํ์๋ค. top์ด๋ผ๋ ์ง์์๊ฐ ๋ฐ๋ก ํ์ฌ stack์์ top์ ์์น๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
3. ์ฝ๋ ๋ถ์
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));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int [] stack = new int[N+1];
int top = 0;
int value = 1;
for (int i = 1; i <= N ; i++) {
int now = Integer.parseInt(br.readLine());
while (value <= now) {
if(value > N) break;
stack[++top] = value++;
sb.append("+\n");
}
if(stack[top] == now){
top--;
sb.append("-\n");
}
else if(stack[top] > now){
System.out.println("NO");
return;
}
}
System.out.println(sb);
}
}