https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
해석 및 팁
이 문제는 문제를 이해하기만 하면 쉽게 풀 수 있습니다. 예제처럼 4가 입력되려면 스택 안에 1,2,3,4 가 있어야 하므로 "+"가 4개 필요하다. 그다음 4를 pop 해준 뒤 3도 pop 해주면 된다 6이 되려면 스택에 6이 필요하므로 순서대로 5와 6을 push 해줍니다. 그다음 8이 필요하므로 순서대로 7과 8을 push 해줍니다. 즉 오름차순으로 계산하면 되는 문제입니다.
Java 코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int n = sc.nextInt();
int count = 1;
for(int i = 1; i <= n; i++) {
int num = sc.nextInt();
while(num >= count) {
stack.push(count);
sb.append("+").append("\n");
count++;
}
if(stack.peek() == num) {
stack.pop();
sb.append("-").append("\n");
}
else {
sb.setLength(0); //StringBuidler 초기화
sb.append("NO");
break;
}
}
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
백준 9461 파도반 수열(Java) (0) | 2023.01.31 |
---|---|
백준 15650 N과 M (2)(Java) (0) | 2023.01.31 |
백준 1002 터렛(Java) (0) | 2023.01.31 |
백준 15649 N과 M(Java) (1) | 2023.01.31 |
백준 2579 계단 오르기(Java) (0) | 2023.01.31 |