Skip to content

Commit cf8eb3c

Browse files
committed
[Silver II] Title: 스택 수열, Time: 288 ms, Memory: 27472 KB -BaekjoonHub
1 parent 6b0a995 commit cf8eb3c

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Silver II] 스택 수열 - 1874
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1874)
4+
5+
### 성능 요약
6+
7+
메모리: 27472 KB, 시간: 288 ms
8+
9+
### 분류
10+
11+
자료 구조, 스택
12+
13+
### 제출 일자
14+
15+
2025년 8월 7일 23:11:15
16+
17+
### 문제 설명
18+
19+
<p>스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다.</p>
20+
21+
<p>1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라.</p>
22+
23+
### 입력
24+
25+
<p>첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1이상 n이하의 정수가 하나씩 순서대로 주어진다. 물론 같은 정수가 두 번 나오는 일은 없다.</p>
26+
27+
### 출력
28+
29+
<p>입력된 수열을 만들기 위해 필요한 연산을 한 줄에 한 개씩 출력한다. push연산은 +로, pop 연산은 -로 표현하도록 한다. 불가능한 경우 NO를 출력한다.</p>
30+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import java.io.*;
2+
import java.util.Stack;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
StringBuilder sb = new StringBuilder();
9+
Stack<Integer> integerStack = new Stack<>();
10+
int N = Integer.parseInt(br.readLine());
11+
int num = 1;
12+
for (int i = 0; i <N ; i++) {
13+
int a = Integer.parseInt(br.readLine());
14+
15+
while (a>=num){
16+
integerStack.push(num);
17+
sb.append("+\n");
18+
// if (a==num){
19+
// integerStack.pop();
20+
// sb.append("-\n");
21+
// }
22+
num+=1;
23+
}
24+
25+
if (integerStack.pop()==a){
26+
sb.append("-\n");
27+
}else{
28+
sb.setLength(0);
29+
sb.append("NO");
30+
break;
31+
}
32+
}
33+
System.out.println(sb.toString());
34+
}
35+
}

0 commit comments

Comments
 (0)