๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 1874๋ฒ ์คํ ์์ด ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์
์์ ์ ๋ ฅ & ์ถ๋ ฅ
ํด๊ฒฐ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง์ ์ด๋ค ํธ๋ฆญ์ ํผ์ ํ ํ ์ง๋ฅผ ์๊ฐํด๋ณด๋ ์ค๋ต ํ๋ณด๋ฅผ ๋๋ ์๊ฐํด๋ณด์.
์ด ๋ฌธ์ ๋ ํน์ดํ๊ฒ, ๋ฌธ์ ์์ ์คํ์ ์ฌ์ฉํ๋ผ๊ณ ๊ถ์ฅํ๋ฏ ๋งํ๋ค.
๋ฌธ์ ์์ ์ ์ํ ๊ทธ๋๋ก ์คํ์ ์ฌ์ฉํด์ ์ ๊ทผํ๋ฉด ์ฌ์ด ํ์ด๋ฅผ ํ ์ ์๋ค.
์ด ๋ฌธ์ ๋ ์คํ ๋๋ ๋ฐฐ์ด์ ์ด์ฉํด์ ํ ์ ์๋๋ฐ, ๋ค๋ฅธ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ ๋ฐฐ์ด์ ์ด์ฉํ ํ์ด๊ฐ ์๋์ ์ผ๋ก ๋ง์์ ํ์๋ ์คํ์ ์ด์ฉํด์ ํ์ด๋ณด๋๋ก ํ๊ฒ ๋ค.
์ ๊ทผ๋ฒ
์คํ ์์ด ๋ฌธ์ ์์ ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ฐ๋ก ๋ฌธ์ ๋ฅผ ์ ๋๋ก ํ์ ํ๋ ๊ฒ์ด๋ค.
- ๋ง์ฝ n์ด๋ผ๋ ์๋ฅผ ๋ง๋๊ฒ ๋๋ค๋ฉด, 1~n ๊น์ง ์คํ์ push ํ๋ค.
- stack์ top์ด n๊ณผ ๊ฐ์์ง๋ค๋ฉด ์คํ์์ pop ํ๋ค.
- n์ stack์ push ํ๋ ๊ณผ์ ์์ ํ ๋ฒ ๋๊ฐ ํน์ ๋ค์ด์จ ์๋ ์ค๋ณต๋๋ฉด ์๋๋ค.
์์ธํ ์ค๋ช ์ ์ด๊ณณ์์ ํ์ธํ ์ ์๋ค.
์ค๋ต ํ๋ณด
์ค๋ต ํ๋ณด๋ 1๊ฐ์ง๋ก ๋ชจ๋ ์ผ์ด์ค๋ฅผ ์ปค๋ฒํ ์ ์๋ค.
- ์ ๋ ฅ ๊ฐ์ด ๋ง์ง๋ง์ผ๋ก ๋ค์ด์จ ๊ฐ ๋ณด๋ค ์์ ๊ฒฝ์ฐ, ์คํ์ ์ต์๋จ์ ๊ฐ๊ณผ ํ์ฌ ์ ๋ ฅ ๊ฐ์ด ๋ค๋ฅผ ๋.
์ ๋ต ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
int cursor = 0; // ๋ง์ง๋ง ์ต์ข
์์น
while(n-- > 0) {
int input = Integer.parseInt(br.readLine());
if(input > cursor) {
for(int i = cursor+1; i <= input; i++ ){
stack.push(i);
sb.append("+\n");
}
cursor = input;
}else if (stack.peek() != input) {
System.out.println("NO");
return;
}
stack.pop();
sb.append("-\n");
}
System.out.println(sb.toString());
}
}
๋๊ธ