-
Java 1874 스택 수열PS 2023. 5. 1. 21:23
풀이 :
int형 배열로 스택을 구현한 뒤 push로 스택에 값을 쌓아준 뒤 pop을 할 때 수열의 값과 top의 값이 일치하는지 확인하는데 여기서 일치하는 값을 찾지 못한다면 boolean값을 false로 한 뒤 마지막에 bool값이 false이면 NO를 아니면 연산기호를 출력한다
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static class NumberStack { int[] stack; int size; public NumberStack(int n){ this.stack = new int[n]; this.size = -1; } public void push(int data){ size++; stack[size] = data; } public int pop(){ if(size == -1){ return -1; } int data = stack[size]; size --; return data; } public int empty(){ if(size == -1){ return -1; } else { return 0; } } public int size(){ return size + 1; } public int top(){ if(size == -1){ return -1; } return stack[size]; } } public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); NumberStack stack = new NumberStack(n); StringBuilder sb = new StringBuilder(); int cnt = 1; for(int i = 0; i < n; i++){ int num = Integer.parseInt(br.readLine()); if(num >= cnt){ while(num >= cnt){ stack.push(cnt); cnt++; sb.append('+').append("\n"); } stack.pop(); sb.append('-').append("\n"); } else { boolean found = false; if(stack.empty() != -1){ int top = stack.pop(); sb.append('-').append("\n"); if(num == top){ found = true; } } if(!found){ System.out.println("NO"); return; } } } System.out.println(sb.toString()); } }
'PS' 카테고리의 다른 글
Java 10845 큐 (0) 2023.05.02 Java 1406 에디터 (0) 2023.05.02 Java 9093 단어 뒤집기 (0) 2023.05.01 Java 10828 스택 (0) 2023.04.29 Java 10810번 문제. 공넣기 (0) 2023.04.20