728x90
반응형
프로그램 로직
- 사용자로부터 수열의 크기(n)를 입력.
- 수열의 각 요소를 입력받아 배열(arr)에 저장.
- 배열의 각 요소에 대해 다음을 수행:
- 스택이 비어 있거나, 스택의 맨 위 요소가 현재 배열 요소보다 작으면, 스택에 새로운 값을 '푸시'(+ 연산).
- 스택의 맨 위 요소가 현재 배열 요소와 같으면, 스택에서 값을 '팝'(- 연산).
- 스택의 맨 위 요소가 현재 배열 요소보다 크면, 수열을 재구성할 수 없으므로 "NO"를 출력하고 프로그램을 종료.
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Stack<Integer>stack=new Stack<>();
ArrayList<String>arr_result=new ArrayList<>();
int count, n;
count=1;
n=in.nextInt();
int [] arr = new int [n];
for(int i=0;i<n;i++)
{
int num=in.nextInt();
arr[i]=num;
}
for(int i=0;i<n;i++)
{
while(true)
{
if(stack.isEmpty() || stack.peek()<arr[i])
{
stack.add(count);
arr_result.add("+");
count++;
}
else if(stack.peek()==arr[i])
{
stack.pop();
arr_result.add("-");
break;
}
else
{
System.out.println("NO");
System.exit(0);
}
}
}
for(int i =0;i<arr_result.size();i++)
{
System.out.println(arr_result.get(i));
}
}
}
728x90
반응형
'프로그래밍_백준 > Java' 카테고리의 다른 글
Java) 1463번 1로 만들기 (dp) (0) | 2024.01.18 |
---|---|
Java) 백준 1003번 피보나치 함수 (DP) (0) | 2024.01.09 |
*Java) 백준 1966번 프린터 큐 (1) | 2024.01.03 |
Java) 1764 듣보잡 (0) | 2023.09.16 |
Java) 10814 나이순 정렬 (2차원 배열 정렬) (0) | 2023.09.16 |